[Kimchi-devel] [PATCH v5] [Kimchi] Feature request (#860): Support Guest Autostart
Bianca Carvalho
bianca at linux.vnet.ibm.com
Tue Sep 6 01:59:30 UTC 2016
I think my environment is messed up, I can't see those errors :/ let's
talk about it tomorrow.
Thanks!
Em 9/5/16 7:07 PM, Aline Manera escreveu:
>
> Hi Bianca,
>
> Some tests are still failing.
>
> ***** Running unit test: test_rest... FAILED
> ======================================================================
> FAIL: test_edit_vm (test_rest.HttpsRestTests)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "test_rest.py", line 316, in test_edit_vm
> self.assertEquals(200, resp.status)
> AssertionError: 200 != 404
>
> ======================================================================
> FAIL: test_edit_vm (test_rest.RestTests)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "test_rest.py", line 316, in test_edit_vm
> self.assertEquals(200, resp.status)
> AssertionError: 200 != 404
>
> ======================================================================
> FAIL: test_unnamed_vms (test_rest.RestTests)
> ----------------------------------------------------------------------
> Traceback (most recent call last):
> File "test_rest.py", line 1153, in test_unnamed_vms
> self.assertEquals(resp.status, 200)
> AssertionError: 404 != 200
>
> ----------------------------------------------------------------------
> Ran 42 tests in 231.810s
>
> FAILED (failures=3)
>
>
> On 09/05/2016 05:17 PM, bianca at linux.vnet.ibm.com wrote:
>> 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 and updated API.md file.
>> Also included API tests to test_rest.py in test_edit_vm function.
>>
>> Signed-off-by: Bianca Carvalho <bianca at linux.vnet.ibm.com>
>> ---
>> API.json | 4 ++++
>> docs/API.md | 3 +++
>> model/vms.py | 11 ++++++++---
>> tests/test_mockmodel.py | 2 +-
>> tests/test_model.py | 8 +++++++-
>> tests/test_rest.py | 18 ++++++++++++++++++
>> 6 files changed, 41 insertions(+), 5 deletions(-)
>>
>> diff --git a/API.json b/API.json
>> index adaa2f7..e72c68d 100644
>> --- a/API.json
>> +++ b/API.json
>> @@ -369,6 +369,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/docs/API.md b/docs/API.md
>> index 15f0007..43bb04b 100644
>> --- a/docs/API.md
>> +++ b/docs/API.md
>> @@ -151,6 +151,8 @@ server.
>> * bootorder: list of devices in boot order
>> * description: VM description
>> * title: VM title
>> + * autostart: show if autostart is enabled.
>> +
>> * **DELETE**: Remove the Virtual Machine
>> * **PUT**: update the parameters of existing VM
>> * name: New name for this VM (only applied for shutoff VM)
>> @@ -183,6 +185,7 @@ server.
>> * bootmenu: prompts guest bootmenu. Bool type.
>> * description: VM description
>> * title: VM title
>> + * autostart: enable/disable guest autostart (true or false params).
>>
>> * **POST**: *See Virtual Machine Actions*
>>
>> diff --git a/model/vms.py b/model/vms.py
>> index f13e605..a8e1c14 100644
>> --- a/model/vms.py
>> +++ b/model/vms.py
>> @@ -80,12 +80,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',
>> - 'description', 'title']
>> + 'description', 'title', 'autostart']
>>
>> XPATH_DOMAIN_DISK =
>> "/domain/devices/disk[@device='disk']/source/@file"
>> XPATH_DOMAIN_DISK_BY_FILE =
>> "./devices/disk[@device='disk']/source[@file='%s']"
>> @@ -270,6 +271,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'):
>> @@ -1314,7 +1318,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_mockmodel.py b/tests/test_mockmodel.py
>> index 147942c..ffd383c 100644
>> --- a/tests/test_mockmodel.py
>> +++ b/tests/test_mockmodel.py
>> @@ -164,7 +164,7 @@ class MockModelTests(unittest.TestCase):
>> keys = set(('name', 'state', 'stats', 'uuid', 'memory',
>> 'cpu_info',
>> 'screenshot', 'icon', 'graphics', 'users',
>> 'groups',
>> 'access', 'persistent', 'bootorder',
>> 'bootmenu', 'title',
>> - 'description'))
>> + 'description', 'autostart'))
>>
>> stats_keys = set(('cpu_utilization', 'mem_utilization',
>> 'net_throughput', 'net_throughput_peak',
>> diff --git a/tests/test_model.py b/tests/test_model.py
>> index d9ffd5e..2ed5e65 100644
>> --- a/tests/test_model.py
>> +++ b/tests/test_model.py
>> @@ -129,7 +129,7 @@ class ModelTests(unittest.TestCase):
>> keys = set(('name', 'state', 'stats', 'uuid', 'memory',
>> 'cpu_info',
>> 'screenshot', 'icon', 'graphics', 'users',
>> 'groups',
>> 'access', 'persistent', 'bootorder',
>> 'bootmenu', 'title',
>> - 'description'))
>> + 'description', 'autostart'))
>>
>> stats_keys = set(('cpu_utilization', 'mem_utilization',
>> 'net_throughput', 'net_throughput_peak',
>> @@ -1362,6 +1362,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(1,
>> inst.vm_lookup(u'пeω-∨м')['autostart'])
>> + inst.vm_update(u'пeω-∨м', {"autostart": False})
>> + self.assertEquals(0,
>> inst.vm_lookup(u'пeω-∨м')['autostart'])
>> +
>> def test_get_interfaces(self):
>> inst = model.Model('test:///default',
>> objstore_loc=self.tmp_store)
>> diff --git a/tests/test_rest.py b/tests/test_rest.py
>> index b1b9f12..4c1ed14 100644
>> --- a/tests/test_rest.py
>> +++ b/tests/test_rest.py
>> @@ -301,6 +301,24 @@ class RestTests(unittest.TestCase):
>> resp = self.request('/plugins/kimchi/vms/∨м-црdαtеd', req,
>> 'PUT')
>> self.assertEquals(400, resp.status)
>>
>> + # set vm autostart tests (powered off)
>> + resp = self.request('/plugins/kimchi/vms/vm-1/start', '{}',
>> 'POST')
>> + self.assertEquals(200, resp.status)
>> + req = json.dumps({"autostart": True})
>> + resp = self.request('/plugins/kimchi/vms/vm-1', req, 'PUT')
>> + self.assertEquals(200, resp.status)
>> + resp = self.request('/plugins/kimchi/vms/vm-1', '{}',
>> 'GET').read()
>> + self.assertEquals(resp["autostart"], True)
>> +
>> + # set vm autostart tests (running)
>> + resp = self.request('/plugins/kimchi/vms/vm-1/poweroff',
>> '{}', 'POST')
>> + self.assertEquals(200, resp.status)
>> + req = json.dumps({"autostart": False})
>> + resp = self.request('/plugins/kimchi/vms/vm-1', req, 'PUT')
>> + self.assertEquals(200, resp.status)
>> + resp = self.request('/plugins/kimchi/vms/vm-1', '{}',
>> 'GET').read()
>> + self.assertEquals(resp["autostart"], True)
>> +
>> def test_vm_lifecycle(self):
>> # Create a Template
>> req = json.dumps({'name': 'test',
>
More information about the Kimchi-devel
mailing list