[Kimchi-devel] [PATCH v5] [Kimchi] Feature request (#860): Support Guest Autostart

Paulo Ricardo Paz Vital pvital at linux.vnet.ibm.com
Tue Sep 6 13:38:32 UTC 2016


Like Bianca, I don't see any error when using 'make check-local' on my
Fedora 24 box. The pep8 installed is: 

/usr/bin/pep8 --version
1.6.2

We should close a base distro version ASAP, since we're in code feeze
now, and base the check-local and execution of test cases on these
version.

On Sep 05 10:59PM, Bianca Carvalho wrote:
> 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',
> > 
> 
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel

-- 
Paulo Ricardo Paz Vital
Linux Technology Center, IBM Systems
http://www.ibm.com/linux/ltc/




More information about the Kimchi-devel mailing list