tools/qvm_template_postprocess: set vm.features['qrexec']
Enable 'qrexec' VM feature to wait for qrexec initialization - it is required to call qubes.PostInstall service. If VM start fails, assume there is no qrexec and drop that feature.
This commit is contained in:
parent
64f7eecf58
commit
9dd659d60f
@ -238,6 +238,8 @@ class TC_00_qvm_template_postprocess(qubesadmin.tests.QubesTestCase):
|
|||||||
('test-vm', 'admin.vm.property.Set', 'netvm', b'')] = b'0\0'
|
('test-vm', 'admin.vm.property.Set', 'netvm', b'')] = b'0\0'
|
||||||
self.app.expected_calls[
|
self.app.expected_calls[
|
||||||
('test-vm', 'admin.vm.property.Reset', 'netvm', None)] = b'0\0'
|
('test-vm', 'admin.vm.property.Reset', 'netvm', None)] = b'0\0'
|
||||||
|
self.app.expected_calls[
|
||||||
|
('test-vm', 'admin.vm.feature.Set', 'qrexec', b'True')] = b'0\0'
|
||||||
self.app.expected_calls[
|
self.app.expected_calls[
|
||||||
('test-vm', 'admin.vm.Start', None, None)] = b'0\0'
|
('test-vm', 'admin.vm.Start', None, None)] = b'0\0'
|
||||||
self.app.expected_calls[
|
self.app.expected_calls[
|
||||||
@ -284,6 +286,8 @@ class TC_00_qvm_template_postprocess(qubesadmin.tests.QubesTestCase):
|
|||||||
('test-vm', 'admin.vm.property.Set', 'netvm', b'')] = b'0\0'
|
('test-vm', 'admin.vm.property.Set', 'netvm', b'')] = b'0\0'
|
||||||
self.app.expected_calls[
|
self.app.expected_calls[
|
||||||
('test-vm', 'admin.vm.property.Reset', 'netvm', None)] = b'0\0'
|
('test-vm', 'admin.vm.property.Reset', 'netvm', None)] = b'0\0'
|
||||||
|
self.app.expected_calls[
|
||||||
|
('test-vm', 'admin.vm.feature.Set', 'qrexec', b'True')] = b'0\0'
|
||||||
self.app.expected_calls[
|
self.app.expected_calls[
|
||||||
('test-vm', 'admin.vm.Start', None, None)] = b'0\0'
|
('test-vm', 'admin.vm.Start', None, None)] = b'0\0'
|
||||||
self.app.expected_calls[
|
self.app.expected_calls[
|
||||||
|
@ -168,7 +168,14 @@ def post_install(args):
|
|||||||
if not args.skip_start:
|
if not args.skip_start:
|
||||||
# just created, so no need to save previous value - we know what it was
|
# just created, so no need to save previous value - we know what it was
|
||||||
vm.netvm = None
|
vm.netvm = None
|
||||||
|
# temporarily enable qrexec feature - so vm.start() will wait for it;
|
||||||
|
# if start fails, rollback it
|
||||||
|
vm.features['qrexec'] = True
|
||||||
|
try:
|
||||||
vm.start()
|
vm.start()
|
||||||
|
except qubesadmin.exc.QubesException:
|
||||||
|
del vm.features['qrexec']
|
||||||
|
else:
|
||||||
try:
|
try:
|
||||||
vm.run_service_for_stdio('qubes.PostInstall')
|
vm.run_service_for_stdio('qubes.PostInstall')
|
||||||
except qubesadmin.exc.QubesVMError:
|
except qubesadmin.exc.QubesVMError:
|
||||||
|
Loading…
Reference in New Issue
Block a user