Merge remote-tracking branch 'origin/pr/312'

* origin/pr/312:
  Added handling for 'force' option in vm shutdown
This commit is contained in:
Marek Marczykowski-Górecki 2020-02-06 23:31:43 +01:00
commit c332de9653
No known key found for this signature in database
GPG Key ID: 063938BA42CFA724
2 changed files with 15 additions and 5 deletions

View File

@ -869,9 +869,9 @@ class QubesAdminAPI(qubes.api.AbstractQubesAPI):
scope='local', execute=True) scope='local', execute=True)
@asyncio.coroutine @asyncio.coroutine
def vm_shutdown(self): def vm_shutdown(self):
self.enforce(not self.arg) force = (self.arg == 'force')
self.fire_event_for_permission() self.fire_event_for_permission(force=force)
yield from self.dest.shutdown() yield from self.dest.shutdown(force=force)
@qubes.api.method('admin.vm.Pause', no_payload=True, @qubes.api.method('admin.vm.Pause', no_payload=True,
scope='local', execute=True) scope='local', execute=True)

View File

@ -1010,7 +1010,18 @@ netvm default=True type=vm \n'''
self.vm.shutdown = coroutine_mock self.vm.shutdown = coroutine_mock
value = self.call_mgmt_func(b'admin.vm.Shutdown', b'test-vm1') value = self.call_mgmt_func(b'admin.vm.Shutdown', b'test-vm1')
self.assertIsNone(value) self.assertIsNone(value)
func_mock.assert_called_once_with() func_mock.assert_called_once_with(force=False)
def test_231_shutdown_force(self):
func_mock = unittest.mock.Mock()
@asyncio.coroutine
def coroutine_mock(*args, **kwargs):
return func_mock(*args, **kwargs)
self.vm.shutdown = coroutine_mock
value = self.call_mgmt_func(b'admin.vm.Shutdown', b'test-vm1', b'force')
self.assertIsNone(value)
func_mock.assert_called_once_with(force=True)
def test_240_pause(self): def test_240_pause(self):
func_mock = unittest.mock.Mock() func_mock = unittest.mock.Mock()
@ -2772,7 +2783,6 @@ netvm default=True type=vm \n'''
b'admin.vm.firewall.Reload', b'admin.vm.firewall.Reload',
b'admin.vm.volume.List', b'admin.vm.volume.List',
b'admin.vm.Start', b'admin.vm.Start',
b'admin.vm.Shutdown',
b'admin.vm.Pause', b'admin.vm.Pause',
b'admin.vm.Unpause', b'admin.vm.Unpause',
b'admin.vm.Kill', b'admin.vm.Kill',