Marek Marczykowski-Górecki
b858488719
Merge remote-tracking branch 'woju/master'
2015-02-21 03:09:29 +01:00
Marek Marczykowski-Górecki
e65842322a
core: hold the lock after QubesVmCollection.save()
...
The statement that unlock_db() is always called directly after save() is
no longer true - tests holds the lock all the time, doing multiple saves
in the middle.
2015-02-21 00:25:50 +01:00
Wojtek Porczyk
2b14bc88d0
core/modules: debug important VM changes
2015-02-19 21:32:43 +01:00
Wojtek Porczyk
241cf2e089
core/qubes.py: ensure that all default_*vm are present in collection
...
References to invalid qids are None'd. Failure to do so may cause KeyErrors even
on fixing ntpd service during instantiation of QubesVmCollection.
2015-02-19 21:32:43 +01:00
Marek Marczykowski-Górecki
bdae560770
backup: fix deadlock on error while receiving backup from a VM
...
When qfile-dom0-unpacker detects an error, it sends error report to
stdout and terminate (so stdout is closed). That close should be
transferred to the VM process (as EOF on its stdin), which will signal
it to stop sending the data and handle error report.
Also qrexec-client holds the connection until both stdin and
stdout are closed.
So when that EOF is missing, tar2qfile will not detect error report and
still tries to send the data and qrexec-client will hold the
connection while receiving process is long dead.
To prevent that deadlock from happening, close FD in python code, so
qfile-dom0-unpacker will be the last owner of write end of the pipe.
When it closes its stdout, qrexec-client will receive EOF at its stdin.
2015-02-18 21:41:22 +01:00
Marek Marczykowski-Górecki
adfc4e0ac9
core: disks handling cleanup, fix them for TemplateHVM
...
Move rootcow_img to storage class, remove clean_volatile_img. And most
importantly - set source_template in QubesHVm.create_on_disk.
2015-02-09 06:02:20 +01:00
Marek Marczykowski-Górecki
869675c15c
core: convert memory/cpu stats to libvirt API
2015-02-09 03:28:01 +01:00
Marek Marczykowski-Górecki
48fd2669cb
raise correct exception
2015-02-07 01:14:22 +01:00
Marek Marczykowski-Górecki
1da8ab5823
core: Add missing import
2015-01-08 03:55:02 +01:00
Marek Marczykowski-Górecki
adff88101a
Rework QubesWatch implementation for libvirt events
2014-12-26 02:56:38 +01:00
Marek Marczykowski-Górecki
d4ab70ae9d
core: update qvm-block code for HAL API
...
Use QubesDB to get list of devices, call libvirt methods to
attach/detach devices.
2014-12-12 03:59:01 +01:00
Marek Marczykowski-Górecki
592a4901c9
core: import monitorlayoutnotify instead of calling it as external script
...
Otherwise deadlock could happen - the script will try to get read lock
on qubes.xml, while the calling tool can already hold the lock. If that
was write lock (which is in case of qfile-daemon-dvm), the deadlock
occurs.
2014-11-21 21:45:03 +01:00
Wojciech Zygmunt Porczyk
6b0a5f9738
storage/xen.py: always initialise args['otherdevs']
2014-11-19 12:50:32 +01:00
Marek Marczykowski-Górecki
9205c5c054
core: fix imports
2014-11-19 12:50:32 +01:00
Rafał Wojdyła
7e8978d278
wni: changed qrexec agent path environment variable name
2014-11-19 12:50:32 +01:00
Rafał Wojdyła
f91d6e93f6
wni: set random password on user creation
2014-11-19 12:50:31 +01:00
Rafał Wojdyła
ccd04c7c8f
wni: properly get user profiles directory
2014-11-19 12:50:31 +01:00
Rafał Wojdyła
81fb2b696b
wni: vm users can't change their password
2014-11-19 12:50:31 +01:00
Rafał Wojdyła
b4d827d5e8
wni: remove user profiles on domain removal
2014-11-19 12:50:31 +01:00
Rafał Wojdyła
b6a379e94a
Fixed PyQt4 import in guihelpers
2014-11-19 12:50:31 +01:00
Marek Marczykowski-Górecki
fef2672935
settings-wni: get installation directory from windows registry
2014-11-19 12:50:31 +01:00
Marek Marczykowski-Górecki
803e128b8e
wni: Add qrexec-client path to WNI settings
2014-11-19 12:50:30 +01:00
Marek Marczykowski-Górecki
071a01d29e
guihelpers: Import PyQt only when needed
2014-11-19 12:50:30 +01:00
Marek Marczykowski-Górecki
06189b4a5b
wni: set path to qrexec-daemon
2014-11-19 12:50:30 +01:00
Marek Marczykowski-Górecki
63eccac025
wni: use win32net module for creating new user
...
This require UAC disabled (or already started as administrator), but
works much more reliable ("net user" sometimes fails _silently_).
2014-11-19 12:50:30 +01:00
Marek Marczykowski-Górecki
e5c2448af4
copy & paste error (VM rename fix)
2014-11-19 12:50:30 +01:00
Marek Marczykowski-Górecki
4300d778a5
qvm-toos: import dbus only when needed
...
Void import errors when 'dbus' module not really needed.
2014-11-19 12:50:29 +01:00
Marek Marczykowski-Górecki
d88da1e66b
wni: add missing parameter
2014-11-19 12:50:29 +01:00
Marek Marczykowski-Górecki
f6729b4968
wni: use generated password
2014-11-19 12:50:29 +01:00
Marek Marczykowski-Górecki
5dbad01796
Fill some more WNI settings
...
Especially use new "wni" libvirt driver.
2014-11-19 12:50:29 +01:00
Marek Marczykowski-Górecki
ea68c6a766
xen: fix template vm storage code
2014-11-19 12:50:28 +01:00
Marek Marczykowski-Górecki
11047bf427
Use platform specific locking method
...
None of found existing portable locking module does support RW locks.
Use lowlevel system locking support - both Windows and Linux support
such feature.
Drop locking code in write_firewall_conf() b/c is is called with
QubesVmCollection lock held anyway.
2014-11-19 12:50:28 +01:00
Marek Marczykowski-Górecki
a5a2c0b97c
Revert "release qubes.xml lock on object destroy"
...
This reverts commit 39e056b74acca3854c5707d8f2cbcd199b8cac75.
This change rely on reverted python-locking use.
2014-11-19 12:50:28 +01:00
Marek Marczykowski-Górecki
5fb1991ad5
QubesWniVmStorage: prefix system user with "qubes-vm-".
2014-11-19 12:50:28 +01:00
Marek Marczykowski-Górecki
f927f12e39
QubesWniVmStorage: pass all positional parameters to base class
2014-11-19 12:50:28 +01:00
Marek Marczykowski-Górecki
392b70a4d8
Create missing private.img when needed
...
Not only for HVM, but any VM type which support private.img.
2014-11-19 12:50:28 +01:00
Marek Marczykowski-Górecki
21c908b9b2
Move storage-related VM rename code to storage class
2014-11-19 12:50:28 +01:00
Marek Marczykowski-Górecki
ada5ebd784
Use "None" in *_img attr for "not applicable"
...
Some VM types do not have particular disk image. Instead of enumerating
cases in storage class, signal unused image from VM class by setting
appropriate attr to None.
2014-11-19 12:50:27 +01:00
Marek Marczykowski-Górecki
e2bea656b4
Add vm-configs for WNI
2014-11-19 12:50:27 +01:00
Marek Marczykowski-Górecki
ec37a4e681
Rename vm-configs directory to be more generic
2014-11-19 12:50:27 +01:00
Marek Marczykowski-Górecki
35ecfc82ef
wni: QubesWniVmStorage and update settings file
2014-11-19 12:50:27 +01:00
Marek Marczykowski-Górecki
e8715cd561
release qubes.xml lock on object destroy
...
This will ensure that lock will be released even in case of error.
2014-11-19 12:50:27 +01:00
Marek Marczykowski-Górecki
50188c8832
Use relative path in system_path dict instead of path templates
...
This will allow use of correct slashes/backslashes (os.path.join instead
of hardcoded '/').
2014-11-19 12:50:27 +01:00
Marek Marczykowski-Górecki
a17f6ef779
Update QubesHVM to use QubesVmStorage classes
...
Also add external drive support to QubesXenVmStorage (move from
QubesHVM).
2014-11-19 12:50:27 +01:00
Marek Marczykowski-Górecki
b323a4d1e3
core: Fix handling the case when no settings file present.
2014-11-19 12:50:26 +01:00
Marek Marczykowski-Górecki
50e44ce22d
makefile: Improve readability of settings.py install command
2014-11-19 12:50:26 +01:00
Marek Marczykowski-Górecki
ec17f7d329
core/xen: setup xen-specific defaults in separate settings file
2014-11-19 12:50:26 +01:00
Marek Marczykowski-Górecki
0a1f3d0a44
core: split VM images handling to separate class
...
This will ease handling different types of VMM (which can require
different image types, location etc).
2014-11-19 12:50:25 +01:00
Marek Marczykowski-Górecki
a8bee8d978
Ignore error when 'xen.lowlevel.xs' doesn't exists
...
There are still few uses of direct xenstore access, most of them are
xen-specific (so doesn't need to be portable). For now simply don't
connect to xenstore when no 'xen.lowlevel.xs' module present. It will
break such xen-specific accesses - it must be somehow reworked - either
by adding appropriate conditionals, or moving such code somewhere else
(custom methods of libvirt driver?).
2014-11-19 12:50:25 +01:00
Marek Marczykowski-Górecki
bc58ca5edb
Remove import xen.lowlevel.xc
...
There is still use of it: QubesHost.get_free_xen_memory and
QubesHost.measure_cpu_usage. Will migrate them to libvirt later (for now
some things will be broken - namely qubes-manager).
2014-11-19 12:50:25 +01:00