
From: Bianca Carvalho <bianca@linux.vnet.ibm.com> Signed-off-by: Bianca Carvalho <bianca@linux.vnet.ibm.com> --- API.json | 4 ++++ model/vms.py | 12 +++++++++--- tests/test_model.py | 6 ++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/API.json b/API.json index 4fdd522..4946069 100644 --- a/API.json +++ b/API.json @@ -322,6 +322,10 @@ "error": "KCHVM0053E", "type": "boolean" }, + "autostart": { + "description": "Enable/Disable guest autostart", + "type": "boolean" + }, "users": { "description": "Array of users who have permission to the VM", "type": "array", diff --git a/model/vms.py b/model/vms.py index 433770a..cfe4c97 100644 --- a/model/vms.py +++ b/model/vms.py @@ -79,11 +79,13 @@ DOM_STATE_MAP = {0: 'nostate', 7: 'pmsuspended'} # update parameters which are updatable when the VM is online -VM_ONLINE_UPDATE_PARAMS = ['graphics', 'groups', 'memory', 'users'] +VM_ONLINE_UPDATE_PARAMS = ['graphics', 'groups', 'memory', 'users', + 'autostart'] # update parameters which are updatable when the VM is offline VM_OFFLINE_UPDATE_PARAMS = ['cpu_info', 'graphics', 'groups', 'memory', - 'name', 'users', 'bootorder', 'bootmenu'] + 'name', 'users', 'bootorder', 'bootmenu', + 'autostart'] XPATH_DOMAIN_DISK = "/domain/devices/disk[@device='disk']/source/@file" XPATH_DOMAIN_DISK_BY_FILE = "./devices/disk[@device='disk']/source[@file='%s']" @@ -261,6 +263,9 @@ class VMModel(object): with lock: dom = self.get_vm(name, self.conn) + if "autostart" in params: + dom.setAutostart(1 if params['autostart'] == True else 0) + # You can only change <maxMemory> offline, updating guest XML if ("memory" in params) and ('maxmemory' in params['memory']) and\ (DOM_STATE_MAP[dom.info()[0]] != 'shutoff'): @@ -1285,7 +1290,8 @@ class VMModel(object): 'access': 'full', 'persistent': True if dom.isPersistent() else False, 'bootorder': boot, - 'bootmenu': bootmenu + 'bootmenu': bootmenu, + 'autostart': dom.autostart() } def _vm_get_disk_paths(self, dom): diff --git a/tests/test_model.py b/tests/test_model.py index 27225f8..7b1fbfe 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -1369,6 +1369,12 @@ class ModelTests(unittest.TestCase): inst.vm_update(u'пeω-∨м', {"bootmenu": False}) self.assertEquals("no", inst.vm_lookup(u'пeω-∨м')['bootmenu']) + # enable/disable autostart + inst.vm_update(u'пeω-∨м', {"autostart": True}) + self.assertEquals("yes", inst.vm_lookup(u'пeω-∨м')['autostart']) + inst.vm_update(u'пeω-∨м', {"autostart": False}) + self.assertEquals("no", inst.vm_lookup(u'пeω-∨м')['autostart']) + def test_get_interfaces(self): inst = model.Model('test:///default', objstore_loc=self.tmp_store) -- 2.7.4