[Kimchi-devel] [PATCH] [Kimchi] Feature request (#860): Support Guest Autostart
bianca at linux.vnet.ibm.com
bianca at linux.vnet.ibm.com
Fri Aug 19 20:34:57 UTC 2016
From: Bianca Carvalho <bianca at linux.vnet.ibm.com>
Include 'autostart' option in API.json and vms.py (lookup and update)
using libvirt dom.setAutostart to set as true or false. Also edit
test_model.py to include those changes.
Signed-off-by: Bianca Carvalho <bianca at 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
More information about the Kimchi-devel
mailing list