[Kimchi-devel] [PATCH][Kimchi 4/4] Update tests

Ramon Medeiros ramonn at linux.vnet.ibm.com
Tue Mar 29 16:30:40 UTC 2016



On 03/29/2016 12:25 PM, Rodrigo Trujillo wrote:
> Comments below
>
> On 03/28/2016 03:34 PM, Ramon Medeiros wrote:
>> Update all tests to use source_media instead of disks and cdrom
>> ---
>>   tests/test_authorization.py |  4 +-
>>   tests/test_livemigration.py |  7 ++--
>>   tests/test_mockmodel.py     | 14 +++----
>>   tests/test_model.py         | 91 
>> ++++++++++++++++++++++++++-------------------
>>   tests/test_rest.py          | 32 +++++++---------
>>   tests/test_template.py      | 47 ++++++++++-------------
>>   tests/test_vmtemplate.py    | 38 +++++++++----------
>>   7 files changed, 118 insertions(+), 115 deletions(-)
>>
>> diff --git a/tests/test_authorization.py b/tests/test_authorization.py
>> index d88f763..7cf8da2 100644
>> --- a/tests/test_authorization.py
>> +++ b/tests/test_authorization.py
>> @@ -91,7 +91,7 @@ class AuthorizationTests(unittest.TestCase):
>>           # but he can get and create a new one
>>           resp = self.request('/plugins/kimchi/templates', '{}', 'GET')
>>           self.assertEquals(403, resp.status)
>> -        req = json.dumps({'name': 'test', 'cdrom': fake_iso})
>> +        req = json.dumps({'name': 'test', 'source_media': fake_iso})
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(403, resp.status)
>>           resp = self.request('/plugins/kimchi/templates/test', '{}', 
>> 'PUT')
>> @@ -100,7 +100,7 @@ class AuthorizationTests(unittest.TestCase):
>>           self.assertEquals(403, resp.status)
>>             # Non-root users can only get vms authorized to them
>> -        model.templates_create({'name': u'test', 'cdrom': fake_iso})
>> +        model.templates_create({'name': u'test', 'source_media': 
>> fake_iso})
>>             task_info = model.vms_create({
>>               'name': u'test-me',
>> diff --git a/tests/test_livemigration.py b/tests/test_livemigration.py
>> index aa8d1bd..c190ce6 100644
>> --- a/tests/test_livemigration.py
>> +++ b/tests/test_livemigration.py
>> @@ -97,12 +97,13 @@ class LiveMigrationTests(unittest.TestCase):
>>           )
>>           params = {'name': u'template_test_vm_migrate',
>>                     'disks': [],
>> -                  'cdrom': UBUNTU_ISO,
>> -                  'memory': {'current': 2048, 'maxmemory': 4096 << 10}}
>> +                  'source_media': UBUNTU_ISO,
>> +                  'memory': {'current':2048, 'max_memory': 4096 << 10}}
>> +
>>           self.inst.templates_create(params)
>>           params = {'name': u'template_test_vm_migrate_nonshared',
>>                     'disks': [{'name': 'test_vm_migrate.img', 'size': 
>> 1}],
>> -                  'cdrom': UBUNTU_ISO,
>> +                  'source_media': UBUNTU_ISO,
>>                     'memory': {'current': 2048, 'maxmemory': 4096*1024}}
>>           self.inst.templates_create(params)
>>   diff --git a/tests/test_mockmodel.py b/tests/test_mockmodel.py
>> index 0668191..9a0ba74 100644
>> --- a/tests/test_mockmodel.py
>> +++ b/tests/test_mockmodel.py
>> @@ -30,6 +30,7 @@ from wok.exception import InvalidOperation
>>   from wok.plugins.kimchi import mockmodel
>>   from wok.plugins.kimchi.osinfo import get_template_default
>>   +import iso_gen
>>     test_server = None
>>   model = None
>> @@ -50,8 +51,7 @@ def setUpModule():
>>       test_server = run_server(host, port, ssl_port, test_mode=True,
>>                                model=model)
>>       fake_iso = '/tmp/fake.iso'
>> -    open(fake_iso, 'w').close()
>> -
>> +    iso_gen.construct_fake_iso(fake_iso, True, '12.04', 'ubuntu')
>>     def tearDown():
>>       test_server.stop()
>> @@ -65,7 +65,7 @@ class MockModelTests(unittest.TestCase):
>>         def test_screenshot_refresh(self):
>>           # Create a VM
>> -        req = json.dumps({'name': 'test', 'cdrom': fake_iso})
>> +        req = json.dumps({'name': 'test', 'source_media': fake_iso})
>>           request(host, ssl_port, '/plugins/kimchi/templates', req, 
>> 'POST')
>>           req = json.dumps({'name': 'test-vm',
>>                             'template': 
>> '/plugins/kimchi/templates/test'})
>> @@ -95,7 +95,7 @@ class MockModelTests(unittest.TestCase):
>>                             resp.getheader('last-modified'))
>>         def test_vm_list_sorted(self):
>> -        req = json.dumps({'name': 'test', 'cdrom': fake_iso})
>> +        req = json.dumps({'name': 'test', 'source_media': fake_iso})
>>           request(host, ssl_port, '/plugins/kimchi/templates', req, 
>> 'POST')
>>             def add_vm(name):
>> @@ -115,7 +115,7 @@ class MockModelTests(unittest.TestCase):
>>         def test_memory_window_changes(self):
>>           model.templates_create({'name': u'test',
>> -                                'cdrom': fake_iso})
>> +                                'source_media': fake_iso})
>>           task = model.vms_create({'name': u'test-vm',
>>                                    'template': 
>> '/plugins/kimchi/templates/test'})
>>           wait_task(model.task_lookup, task['id'])
>> @@ -127,7 +127,7 @@ class MockModelTests(unittest.TestCase):
>>         def test_hotplug_3D_card(self):
>>           model.templates_create({'name': u'test',
>> -                                'cdrom': fake_iso})
>> +                                'source_media': fake_iso})
>>           task = model.vms_create({'name': u'test-vm',
>>                                    'template': 
>> '/plugins/kimchi/templates/test'})
>>           wait_task(model.task_lookup, task['id'])
>> @@ -147,7 +147,7 @@ class MockModelTests(unittest.TestCase):
>>         def test_vm_info(self):
>>           model.templates_create({'name': u'test',
>> -                                'cdrom': fake_iso})
>> +                                'source_media': fake_iso})
>>           task = model.vms_create({'name': u'test-vm',
>>                                    'template': 
>> '/plugins/kimchi/templates/test'})
>>           wait_task(model.task_lookup, task['id'])
>> diff --git a/tests/test_model.py b/tests/test_model.py
>> index c91ba8f..962fff1 100644
>> --- a/tests/test_model.py
>> +++ b/tests/test_model.py
>> @@ -138,9 +138,10 @@ class ModelTests(unittest.TestCase):
>>               vol = inst.storagevolume_lookup(u'default', 
>> vol_params['name'])
>>                 params = {'name': 'test', 'disks':
>> -                      [{'base': vol['path'], 'size': 1, 'pool': {
>> -                          'name': 
>> '/plugins/kimchi/storagepools/default'}}],
>> -                      'cdrom': UBUNTU_ISO}
>> +                      [{'index':0, 'base': vol['path'], 'size': 1, 
>> 'pool': {
>> +                          'name': 
>> '/plugins/kimchi/storagepools/default'},
>> +                      'format': 'qcow2'}], 'source_media': UBUNTU_ISO}
>> +
>>               inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 'test')
>>   @@ -162,15 +163,21 @@ class ModelTests(unittest.TestCase):
>>                 self.assertRaises(InvalidOperation, 
>> inst.vmsnapshots_create,
>>                                 u'kimchi-vm')
>> -
>> -            inst.vm_poweroff(u'kimchi-vm')
>> -            vm = inst.vm_lookup(u'kimchi-vm')
>> +            inst.vm_poweroff("kimchi-vm")
>> +            vm = inst.vm_lookup("kimchi-vm")
> Why did you remove the unicode tag above ?
>>                 empty_snap = inst.currentvmsnapshot_lookup(u'kimchi-vm')
>>               self.assertEquals({}, empty_snap)
>>                 # this snapshot should be deleted when its VM is deleted
>>               params = {'name': u'mysnap'}
>> +
>> +            # turnoff vm before snapshot
>> +            if inst.vm_lookup(u'kimchi-vm')['state'] == "running":
>> +                inst.vm_poweroff('kimchi-vm')
> Here, you are using unicode  to lookup and after not anymore, then 
> using again below
> I think there is not problem using unicode in all code.
>> +
>> +            vm = inst.vm_lookup(u'kimchi-vm')
>> +
>>               task = inst.vmsnapshots_create(u'kimchi-vm', params)
>>               inst.task_wait(task['id'])
>>               task = inst.task_lookup(task['id'])
>> @@ -179,6 +186,7 @@ class ModelTests(unittest.TestCase):
>>               self.assertRaises(NotFoundError, inst.vmsnapshot_lookup,
>>                                 u'kimchi-vm', u'foobar')
>>   +
> Two spaces
>>               snap = inst.vmsnapshot_lookup(u'kimchi-vm', 
>> params['name'])
>>               self.assertTrue(int(time.time()) >= int(snap['created']))
>>               self.assertEquals(vm['state'], snap['state'])
>> @@ -207,6 +215,10 @@ class ModelTests(unittest.TestCase):
>>               current_snap = inst.currentvmsnapshot_lookup(u'kimchi-vm')
>>               self.assertEquals(snap, current_snap)
>>   +            # "kimchi-vm-new" exists: remove it
>> +            if "kimchi-vm-new" in inst.vms_get_list():
>> +                inst.vm_delete("kimchi-vm-new")
>> +
> This seems to be a workaround or hack. Why does kimchi-vm-new still 
> exist ?
> Because of a parallel test running ?? or is it a leftover that we must 
> handle properly ?
> I mean, this could hide another problem. Why not just rename (below) 
> to kimchi-vm-new2 ?
> Or even better "kimchi-vm-new-<testX>, so we can know which test is 
> leaving the vm.
>>               # update vm name
>>               inst.vm_update('kimchi-vm', {'name': u'kimchi-vm-new'})
>>   @@ -216,7 +228,6 @@ class ModelTests(unittest.TestCase):
>>               # snapshot revert to the first created vm
>>               result = inst.vmsnapshot_revert(u'kimchi-vm-new', 
>> params['name'])
>>               self.assertEquals(result, [u'kimchi-vm', snap['name']])
>> -
>>               vm = inst.vm_lookup(u'kimchi-vm')
>>               self.assertEquals(vm['state'], snap['state'])
>>   @@ -259,10 +270,12 @@ class ModelTests(unittest.TestCase):
>>                         'capacity': 1073741824,  # 1 GiB
>>                         'allocation': 1048576,  # 1 MiB
>>                         'format': 'qcow2'}
>> -            task_id = inst.storagevolumes_create('default', 
>> params)['id']
>> +
>>               rollback.prependDefer(inst.storagevolume_delete, 
>> 'default', vol)
> You removed the storage volume creation, but left the rollback.
>> -            inst.task_wait(task_id)
>> -            self.assertEquals('finished', 
>> inst.task_lookup(task_id)['status'])
>> +            if "base-vol.img" not in 
>> inst.storagevolumes_get_list("default"):
>> +                task_id = inst.storagevolumes_create('default', 
>> params)['id']
>> +                inst.task_wait(task_id)
>> +                self.assertEquals('finished', 
>> inst.task_lookup(task_id)['status'])
> Rollback should be here
>>               vol_path = inst.storagevolume_lookup('default', 
>> vol)['path']
>>                 # Create template based on IMG file
>> @@ -274,7 +287,8 @@ class ModelTests(unittest.TestCase):
>>                            "folder": [], "icon": "images/icon-vm.png",
>>                            "cdrom": "", "os_distro": "unknown",
>>                            "os_version": "unknown",
>> -                         "disks": [{"base": vol_path, "size": 10,
>> +                         "source_media": vol_path,
>> +                         "disks": [{"size": 10,
>>                                       "format": "qcow2",
>>                                       "pool": {"name": pool_uri}}]}
> cdrom and source_media in the same place.
>
>>   @@ -299,7 +313,7 @@ class ModelTests(unittest.TestCase):
>>       @unittest.skipUnless(utils.running_as_root(), 'Must be run as 
>> root')
>>       def test_vm_graphics(self):
>>           inst = model.Model(objstore_loc=self.tmp_store)
>> -        params = {'name': 'test', 'disks': [], 'cdrom': UBUNTU_ISO}
>> +        params = {'name': 'test', 'disks': [], 'source_media': 
>> UBUNTU_ISO}
>>           inst.templates_create(params)
>>           with RollbackContext() as rollback:
>>               params = {'name': 'kimchi-vnc',
>> @@ -329,7 +343,7 @@ class ModelTests(unittest.TestCase):
>>       @unittest.skipUnless(utils.running_as_root(), "Must be run as 
>> root")
>>       def test_vm_serial(self):
>>           inst = model.Model(objstore_loc=self.tmp_store)
>> -        params = {'name': 'test', 'disks': [], 'cdrom': UBUNTU_ISO}
>> +        params = {'name': 'test', 'disks': [], 'source_media': 
>> UBUNTU_ISO}
>>           inst.templates_create(params)
>>           with RollbackContext() as rollback:
>>               params = {'name': 'kimchi-serial',
>> @@ -350,7 +364,7 @@ class ModelTests(unittest.TestCase):
>>       def test_vm_ifaces(self):
>>           inst = model.Model(objstore_loc=self.tmp_store)
>>           with RollbackContext() as rollback:
>> -            params = {'name': 'test', 'disks': [], 'cdrom': UBUNTU_ISO}
>> +            params = {'name': 'test', 'disks': [], 'source_media': 
>> UBUNTU_ISO}
>>               inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 'test')
>>   @@ -466,7 +480,7 @@ class ModelTests(unittest.TestCase):
>>               inst.task_wait(task_id)
>>                 vm_name = 'kimchi-cdrom'
>> -            params = {'name': 'test', 'disks': [], 'cdrom': UBUNTU_ISO}
>> +            params = {'name': 'test','disks':[], 'source_media': 
>> UBUNTU_ISO}
>>               inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 'test')
>>               params = {'name': vm_name,
>> @@ -510,7 +524,7 @@ class ModelTests(unittest.TestCase):
>>                 vm_name = 'kimchi-ide-bus-vm'
>>               params = {'name': 'old_distro_template', 'disks': [],
>> -                      'cdrom': old_distro_iso}
>> +                      'source_media': old_distro_iso}
>>               inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 
>> 'old_distro_template')
>>               params = {
>> @@ -535,7 +549,7 @@ class ModelTests(unittest.TestCase):
>>           inst = model.Model(objstore_loc=self.tmp_store)
>>           with RollbackContext() as rollback:
>>               vm_name = 'kimchi-cdrom'
>> -            params = {'name': 'test', 'disks': [], 'cdrom': UBUNTU_ISO}
>> +            params = {'name': 'test',"disks":[], 'source_media': 
>> UBUNTU_ISO}
>>               inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 'test')
>>               params = {'name': vm_name,
>> @@ -624,9 +638,10 @@ class ModelTests(unittest.TestCase):
>>           inst = model.Model(objstore_loc=self.tmp_store)
>>             with RollbackContext() as rollback:
>> -            params = {'name': 'test', 'disks': [{'size': 1, 'pool': {
>> -                'name': '/plugins/kimchi/storagepools/default'}}],
>> -                'cdrom': UBUNTU_ISO}
>> +            params = {'name': 'test', 'disks': [{'size': 1, 'index': 0,
>> +                'pool': {'name': 
>> '/plugins/kimchi/storagepools/default'},
>> +                'format': 'qcow2'}], 'source_media': UBUNTU_ISO}
>> +
>>               inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 'test')
>>   @@ -683,9 +698,9 @@ class ModelTests(unittest.TestCase):
>> self._create_template_conf_with_disk_format('vmdk')
>> rollback.prependDefer(self._restore_template_conf_file)
>>   -            params = {'name': 'test', 'disks': [{'size': 1, 'pool': {
>> -                'name': '/plugins/kimchi/storagepools/default'}}],
>> -                'cdrom': UBUNTU_ISO}
>> +            params = {'name': 'test', 'disks': [{'index': 0, 'size': 1,
>> +                'pool': {'name': 
>> '/plugins/kimchi/storagepools/default'},
>> +                'format': 'vmdk'}], 'source_media': UBUNTU_ISO}
>>               inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 'test')
>>   @@ -710,10 +725,10 @@ class ModelTests(unittest.TestCase):
>> self._create_template_conf_with_disk_format(default_vol)
>> rollback.prependDefer(self._restore_template_conf_file)
>>   -            params = {'name': 'test', 'disks': [{
>> -                'size': 1, 'format': user_vol,
>> -                'pool': {'name': 
>> '/plugins/kimchi/storagepools/default'}}],
>> -                'cdrom': UBUNTU_ISO}
>> +            params = {'name': 'test', 'disks': [{'index': 0, 'size': 1,
>> +                'pool': {'name': 
>> '/plugins/kimchi/storagepools/default'},
>> +                'format': 'raw'}], 'source_media': UBUNTU_ISO}
>> +
>>               inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 'test')
>>   @@ -736,9 +751,9 @@ class ModelTests(unittest.TestCase):
>>               self._create_template_conf_with_disk_format(None)
>> rollback.prependDefer(self._restore_template_conf_file)
>>   -            params = {'name': 'test', 'disks': [{'size': 1, 'pool': {
>> -                'name': '/plugins/kimchi/storagepools/default'}}],
>> -                'cdrom': UBUNTU_ISO}
>> +            params = {'name': 'test', 'disks': [{'index': 0, 'size': 1,
>> +                'pool': {'name': 
>> '/plugins/kimchi/storagepools/default'},
>> +                'format': 'qcow2'}], 'source_media': UBUNTU_ISO}
>>               inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 'test')
>>   @@ -758,7 +773,7 @@ class ModelTests(unittest.TestCase):
>>           inst = model.Model(None, objstore_loc=self.tmp_store)
>>           orig_params = {'name': 'test',
>>                          'memory': {'current': 1024, 'maxmemory': 3072},
>> -                       'cdrom': UBUNTU_ISO}
>> +                       'source_media': UBUNTU_ISO}
>>           inst.templates_create(orig_params)
>>             with RollbackContext() as rollback:
>> @@ -795,9 +810,10 @@ class ModelTests(unittest.TestCase):
>>           # only supports this format
>>           orig_params = {'name': 'test', 'memory': {'current': 1024},
>>                          'cpu_info': {'vcpus': 1},
>> -                       'cdrom': UBUNTU_ISO,
>> -                       'disks': [{'size': 1, 'format': 'qcow2', 
>> 'pool': {
>> -                           'name': 
>> '/plugins/kimchi/storagepools/default'}}]}
>> +                       'disks': [{'index': 0, 'size': 1, 'format': 
>> 'qcow2',
>> +                        'pool': {
>> +                           'name': 
>> '/plugins/kimchi/storagepools/default'}}],
>> +                       'source_media': UBUNTU_ISO}
>>           inst.templates_create(orig_params)
>>             with RollbackContext() as rollback:
>> @@ -1034,7 +1050,7 @@ class ModelTests(unittest.TestCase):
>>           inst = model.Model(objstore_loc=self.tmp_store)
>>             with RollbackContext() as rollback:
>> -            params = {'name': u'test', 'disks': [], 'cdrom': 
>> UBUNTU_ISO}
>> +            params = {'name': u'test', 'source_media': UBUNTU_ISO}
>>               inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 'test')
>>   @@ -1060,7 +1076,7 @@ class ModelTests(unittest.TestCase):
>>           inst = model.Model(objstore_loc=self.tmp_store)
>>             with RollbackContext() as rollback:
>> -            params = {'name': 'test', 'disks': [], 'cdrom': UBUNTU_ISO}
>> +            params = {'name': 'test', 'source_media': UBUNTU_ISO}
>>               inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 'test')
>>   @@ -1131,8 +1147,7 @@ class ModelTests(unittest.TestCase):
>>           with RollbackContext() as rollback:
>>               params = {
>>                   'name': 'test',
>> -                'disks': [],
>> -                'cdrom': UBUNTU_ISO,
>> +                'source_media': UBUNTU_ISO,
>>                   'domain': 'test',
>>                   'arch': 'i686'
>>               }
>> diff --git a/tests/test_rest.py b/tests/test_rest.py
>> index d0d2fcf..a76cbcb 100644
>> --- a/tests/test_rest.py
>> +++ b/tests/test_rest.py
>> @@ -107,7 +107,7 @@ class RestTests(unittest.TestCase):
>>           self.assertEquals(1, len(vms))
>>             # Create a template as a base for our VMs
>> -        req = json.dumps({'name': 'test', 'cdrom': fake_iso})
>> +        req = json.dumps({'name': 'test', 'source_media': fake_iso})
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>>   @@ -134,7 +134,7 @@ class RestTests(unittest.TestCase):
>>           self.assertEquals([], vm['groups'])
>>         def test_edit_vm(self):
>> -        req = json.dumps({'name': 'test', 'cdrom': fake_iso})
>> +        req = json.dumps({'name': 'test', 'source_media': fake_iso})
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>>   @@ -291,9 +291,8 @@ class RestTests(unittest.TestCase):
>>         def test_vm_lifecycle(self):
>>           # Create a Template
>> -        req = json.dumps({'name': 'test', 'disks': DISKS,
>> -                          'icon': 
>> 'plugins/kimchi/images/icon-debian.png',
>> -                          'cdrom': fake_iso})
>> +        req = json.dumps({'name': 'test', 'icon': 
>> 'plugins/kimchi/images/icon-debian.png',
>> +                          'source_media': fake_iso,'disks': DISKS})
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>>   @@ -518,7 +517,7 @@ class RestTests(unittest.TestCase):
>>         def test_vm_graphics(self):
>>           # Create a Template
>> -        req = json.dumps({'name': 'test', 'cdrom': fake_iso})
>> +        req = json.dumps({'name': 'test', 'source_media': fake_iso})
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>>   @@ -612,7 +611,7 @@ class RestTests(unittest.TestCase):
>>             with RollbackContext() as rollback:
>>               # Create a template as a base for our VMs
>> -            req = json.dumps({'name': 'test', 'cdrom': fake_iso})
>> +            req = json.dumps({'name': 'test', 'source_media': 
>> fake_iso})
>>               resp = self.request('/plugins/kimchi/templates', req, 
>> 'POST')
>>               self.assertEquals(201, resp.status)
>>               # Delete the template
>> @@ -785,7 +784,7 @@ class RestTests(unittest.TestCase):
>>             with RollbackContext() as rollback:
>>               # Create a template as a base for our VMs
>> -            req = json.dumps({'name': 'test', 'cdrom': fake_iso})
>> +            req = json.dumps({'name': 'test', 'source_media': 
>> fake_iso})
>>               resp = self.request('/plugins/kimchi/templates', req, 
>> 'POST')
>>               self.assertEquals(201, resp.status)
>>               # Delete the template
>> @@ -891,8 +890,7 @@ class RestTests(unittest.TestCase):
>>         def test_vm_customise_storage(self):
>>           # Create a Template
>> -        req = json.dumps({'name': 'test', 'cdrom': fake_iso,
>> -                                          'disks': DISKS})
>> +        req = json.dumps({'name': 'test', 'source_media': fake_iso, 
>> 'disks': DISKS})
> PEP8 problem
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>>   @@ -954,7 +952,7 @@ class RestTests(unittest.TestCase):
>>             # Create template fails because SCSI volume is missing
>>           tmpl_params = {
>> -            'name': 'test_fc_pool', 'cdrom': fake_iso, 'disks': 
>> [{'pool': {
>> +            'name': 'test_fc_pool', 'source_media': fake_iso, 
>> 'disks': [{'pool': {
>>                   'name': 
>> '/plugins/kimchi/storagepools/scsi_fc_pool'}}]}
>>             req = json.dumps(tmpl_params)
>> @@ -998,7 +996,7 @@ class RestTests(unittest.TestCase):
>>         def test_unnamed_vms(self):
>>           # Create a Template
>> -        req = json.dumps({'name': 'test', 'cdrom': fake_iso})
>> +        req = json.dumps({'name': 'test', 'source_media': fake_iso})
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>>   @@ -1039,10 +1037,8 @@ class RestTests(unittest.TestCase):
>>             # Create a Template
>>           mock_base = '/tmp/mock.img'
>> -        open(mock_base, 'w').close()
>> -        disks = copy.deepcopy(DISKS)
>> -        disks[0]['base'] = mock_base
>> -        req = json.dumps({'name': 'test', 'disks': disks})
>> +        os.system("qemu-img create -f qcow2 %s 10M" % mock_base)
>> +        req = json.dumps({'name': 'test', 'source_media': mock_base})
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>>   @@ -1112,7 +1108,7 @@ class RestTests(unittest.TestCase):
>>           # In real model os distro/version can be omitted
>>           # as we will scan the iso
>>           req = json.dumps({'name': 'test',
>> -                          'cdrom': storagevolume['path'],
>> +                          'source_media': storagevolume['path'],
>>                             'os_distro': storagevolume['os_distro'],
>>                             'os_version': storagevolume['os_version']})
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>> @@ -1150,7 +1146,7 @@ class RestTests(unittest.TestCase):
>>         def test_screenshot_refresh(self):
>>           # Create a VM
>> -        req = json.dumps({'name': 'test', 'cdrom': fake_iso})
>> +        req = json.dumps({'name': 'test', 'source_media': fake_iso})
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           req = json.dumps({'name': 'test-vm',
>>                             'template': 
>> '/plugins/kimchi/templates/test'})
>> diff --git a/tests/test_template.py b/tests/test_template.py
>> index fcb2e46..1831042 100644
>> --- a/tests/test_template.py
>> +++ b/tests/test_template.py
>> @@ -17,7 +17,7 @@
>>   # You should have received a copy of the GNU Lesser General Public
>>   # License along with this library; if not, write to the Free Software
>>   # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  
>> 02110-1301 USA
>> -
> Space here
>> +import iso_gen
>>   import json
>>   import os
>>   import psutil
>> @@ -53,6 +53,7 @@ def setUpModule():
>>       cherrypy_port = get_free_port('cherrypy_port')
>>       test_server = run_server(host, port, ssl_port, test_mode=True,
>>                                cherrypy_port=cherrypy_port, model=model)
>> +    iso_gen.construct_fake_iso("/tmp/mock.iso", True, '14.04', 
>> 'ubuntu')
>>       def tearDownModule():
>> @@ -70,16 +71,16 @@ class TemplateTests(unittest.TestCase):
>>           self.assertEquals(200, resp.status)
>>           self.assertEquals(0, len(json.loads(resp.read())))
>>   -        # Create a template without cdrom and disk specified fails 
>> with 400
>> +        # Create a template without cdrom and disk specified fails 
>> with 500
>>           t = {'name': 'test', 'os_distro': 'ImagineOS',
>>                'os_version': '1.0', 'memory': {'current': 1024},
>>                'cpu_info': {'vcpus': 1}}
>>           req = json.dumps(t)
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>> -        self.assertEquals(400, resp.status)
>> +        self.assertEquals(500, resp.status)
> Here the right return error is 400, because you are passing, actually, 
> missing parameters.
> 500 should be returned only when some server peace breaks. I mean, not 
> related with user options.
> Maybe you need to change the function that is testing and returning this
>>             # Create a template
>> -        t = {'name': 'test', 'cdrom': '/tmp/mock.iso'}
>> +        t = {'name': 'test', 'source_media': '/tmp/mock.iso'}
>>           req = json.dumps(t)
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>> @@ -117,22 +118,20 @@ class TemplateTests(unittest.TestCase):
>>           self.assertEquals(204, resp.status)
>>             # Create a template with same name fails with 400
>> -        req = json.dumps({'name': 'test', 'cdrom': '/tmp/mock.iso'})
>> +        req = json.dumps({'name': 'test', 'source_media': 
>> '/tmp/mock.iso'})
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(400, resp.status)
>>             # Create an image based template
>> -        open('/tmp/mock.img', 'w').close()
>> -        t = {'name': 'test_img_template', 'disks': [{
>> -            'base': '/tmp/mock.img', 'format': 'qcow2',
>> -            'pool': {'name': DEFAULT_POOL}, 'size': 1}]}
>> +        os.system("qemu-img create -f qcow2 %s 10G" % '/tmp/mock.img')
> Are you deleting this file ??? Same for when you create above
I'm not deleting the image, just changed how it's created. Now, 
vmteplate check if the passed image is qcow or raw, so i have to create 
a authentic image instead of mock
>> +        t = {'name': 'test_img_template', 'source_media': 
>> '/tmp/mock.img'}
>>           req = json.dumps(t)
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>>           os.remove('/tmp/mock.img')
>>             # Test disk format
>> -        t = {'name': 'test-format', 'cdrom': '/tmp/mock.iso', 
>> 'disks': [{
>> +        t = {'name': 'test-format', 'source_media': '/tmp/mock.iso', 
>> 'disks': [{
>>                'index': 0, 'size': 10, 'format': 'vmdk', 'pool': {
>>                    'name': DEFAULT_POOL}}]}
>>           req = json.dumps(t)
>> @@ -149,7 +148,7 @@ class TemplateTests(unittest.TestCase):
>>           else:
>>               max_mem = (psutil.TOTAL_PHYMEM >> 10 >> 10)
>>           memory = max_mem + 1024
>> -        t = {'name': 'test-maxmem', 'cdrom': '/tmp/mock.iso',
>> +        t = {'name': 'test-maxmem', 'source_media': '/tmp/mock.iso',
>>                'memory': {'current': memory}}
>>           req = json.dumps(t)
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>> @@ -158,7 +157,7 @@ class TemplateTests(unittest.TestCase):
>>         def test_customized_tmpl(self):
>>           # Create a template
>> -        t = {'name': 'test', 'cdrom': '/tmp/mock.iso'}
>> +        t = {'name': 'test', 'source_media': '/tmp/mock.iso'}
>>           req = json.dumps(t)
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>> @@ -328,7 +327,7 @@ class TemplateTests(unittest.TestCase):
>>         def test_customized_network(self):
>>           # Create a template
>> -        t = {'name': 'test', 'cdrom': '/tmp/mock.iso'}
>> +        t = {'name': 'test', 'source_media': '/tmp/mock.iso'}
>>           req = json.dumps(t)
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>> @@ -364,7 +363,7 @@ class TemplateTests(unittest.TestCase):
>>         def test_customized_storagepool(self):
>>           # Create a template
>> -        t = {'name': 'test', 'cdrom': '/tmp/mock.iso'}
>> +        t = {'name': 'test', 'source_media': '/tmp/mock.iso'}
>>           req = json.dumps(t)
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>> @@ -410,13 +409,13 @@ class TemplateTests(unittest.TestCase):
>>                       vol = vols[0]['name']
>>                       req = json.dumps({'disks': [{'volume': vol,
>>                                                    'pool': {'name': 
>> pool_uri},
>> -                                                 'format': 'raw'}]})
>> +                                                 'format': 'raw', 
>> 'index':1}]})
>>               elif pool['type'] == 'logical':
>>                   req = json.dumps({'disks': [{'pool': {'name': 
>> pool_uri},
>> -                                             'format': 'raw', 
>> 'size': 10}]})
>> +                                             'format': 'raw', 
>> 'size': 10, 'index': 1}]})
>>               else:
>>                   req = json.dumps({'disks': [{'pool': {'name': 
>> pool_uri},
>> -                                             'format': 'qcow2', 
>> 'size': 10}]})
>> +                                             'format': 'qcow2', 
>> 'size': 10, 'index':1}]})
>>                 if req is not None:
>>                   resp = 
>> self.request('/plugins/kimchi/templates/test', req,
>> @@ -425,7 +424,7 @@ class TemplateTests(unittest.TestCase):
>>             # Test disk template update with different pool
>>           pool_uri = 
>> u'/plugins/kimchi/storagepools/kīмсhīUnitTestDirPool'
>> -        disk_data = {'disks': [{'size': 5, 'format': 'qcow2',
>> +        disk_data = {'disks': [{'size': 5, 'format': 'qcow2', 
>> 'index':0,
>>                                   'pool': {'name': pool_uri}}]}
>>           req = json.dumps(disk_data)
>>           resp = self.request('/plugins/kimchi/templates/test', req, 
>> 'PUT')
>> @@ -453,12 +452,8 @@ class TemplateTests(unittest.TestCase):
>>           self.request(pool_uri + '/activate', '{}', 'POST')
>>             # Create a template using the custom network and pool
>> -        t = {'name': 'test', 'cdrom': '/tmp/mock.iso',
>> -             'networks': ['nat-network'],
>> -             'disks': [{'pool': {
>> -                 'name': '/plugins/kimchi/storagepools/dir-pool'},
>> -                 'size': 2,
>> -                 'format': 'qcow2'}]}
>> +        t = {'name': 'test', 'source_media': '/tmp/mock.iso',
> You are using /tmp/mock.iso in a lot of place, lets create a global 
> variable. Easier to maintain.
>
>> +             'networks': ['nat-network']}
>>           req = json.dumps(t)
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>> @@ -482,7 +477,3 @@ class TemplateTests(unittest.TestCase):
>>           resp = 
>> self.request('/plugins/kimchi/storagepools/dir-pool', '{}',
>>                               'DELETE')
>>           self.assertEquals(400, resp.status)
>> -
>> -        # Verify the template
>> -        res = 
>> json.loads(self.request('/plugins/kimchi/templates/test').read())
>> -        self.assertEquals(res['invalid']['cdrom'], ['/tmp/mock.iso'])
>> diff --git a/tests/test_vmtemplate.py b/tests/test_vmtemplate.py
>> index eed58b0..0bd2f3e 100644
>> --- a/tests/test_vmtemplate.py
>> +++ b/tests/test_vmtemplate.py
>> @@ -17,6 +17,7 @@
>>   # License along with this library; if not, write to the Free Software
>>   # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  
>> 02110-1301 USA
>>   +import iso_gen
>>   import os
>>   import psutil
>>   import unittest
>> @@ -36,8 +37,7 @@ DISKS = [{'size': 10, 'format': 'raw', 'index': 0, 
>> 'pool': {'name':
>>   class VMTemplateTests(unittest.TestCase):
>>       def setUp(self):
>>           self.iso = '/tmp/mock.iso'
>> -        open(self.iso, 'w').close()
>> -
>> +        iso_gen.construct_fake_iso(self.iso, True, '12.04', 'ubuntu')
>>       def tearDown(self):
>>           os.unlink(self.iso)
>>   @@ -45,51 +45,51 @@ class VMTemplateTests(unittest.TestCase):
>>           disk_bus = get_template_default('old', 'disk_bus')
>>           memory = get_template_default('old', 'memory')
>>           nic_model = get_template_default('old', 'nic_model')
>> -        fields = (('name', 'test'), ('cdrom', self.iso),
>> +        fields = (('name', 'test'), ('source_media', self.iso),
>>                     ('os_distro', 'unknown'), ('os_version', 'unknown'),
>>                     ('cpu_info', {'vcpus': 1, 'maxvcpus': 1}),
>>                     ('memory', memory), ('networks', ['default']),
>>                     ('disk_bus', disk_bus), ('nic_model', nic_model),
>>                     ('graphics', {'type': 'vnc', 'listen': 
>> '127.0.0.1'}))
>>   -        args = {'name': 'test', 'cdrom': self.iso}
>> -        t = VMTemplate(args)
>> +        args = {'name': 'test', 'source_media': self.iso}
>> +        t = VMTemplate(args, True)
>>           for name, val in fields:
>>               self.assertEquals(val, t.info.get(name))
>>         def test_construct_overrides(self):
>>           graphics = {'type': 'spice', 'listen': '127.0.0.1'}
>> -        args = {'name': 'test', 'disks': DISKS,
>> -                'graphics': graphics, "cdrom": self.iso}
>> -        t = VMTemplate(args)
>> +        args = {'name': 'test', 'graphics': graphics, 'disks': DISKS,
>> +                'source_media': self.iso}
>> +        t = VMTemplate(args, True)
>>           self.assertEquals(2, len(t.info['disks']))
>>           self.assertEquals(graphics, t.info['graphics'])
>>         def test_specified_graphics(self):
>>           # Test specified listen
>>           graphics = {'type': 'vnc', 'listen': '127.0.0.1'}
>> -        args = {'name': 'test', 'disks': DISKS,
>> -                'graphics': graphics, 'cdrom': self.iso}
>> -        t = VMTemplate(args)
>> +        args = {'name': 'test', 'graphics': graphics, 'disks': DISKS,
>> +                'source_media': self.iso}
>> +        t = VMTemplate(args, True)
>>           self.assertEquals(graphics, t.info['graphics'])
>>             # Test specified type
>>           graphics = {'type': 'spice', 'listen': '127.0.0.1'}
>>           args['graphics'] = graphics
>> -        t = VMTemplate(args)
>> +        t = VMTemplate(args, True)
>>           self.assertEquals(graphics, t.info['graphics'])
>>             # If no listen specified, test the default listen
>>           graphics = {'type': 'vnc'}
>>           args['graphics'] = graphics
>> -        t = VMTemplate(args)
>> +        t = VMTemplate(args, True)
>>           self.assertEquals(graphics['type'], 
>> t.info['graphics']['type'])
>>           self.assertEquals('127.0.0.1', t.info['graphics']['listen'])
>>         def test_to_xml(self):
>>           graphics = {'type': 'spice', 'listen': '127.0.0.1'}
>>           vm_uuid = str(uuid.uuid4()).replace('-', '')
>> -        t = VMTemplate({'name': 'test-template', 'cdrom': self.iso})
>> +        t = VMTemplate({'name': 'test-template', 'source_media': 
>> self.iso}, True)
>>           xml = t.to_vm_xml('test-vm', vm_uuid, graphics=graphics)
>>           self.assertEquals(vm_uuid, xpath_get_text(xml, 
>> "/domain/uuid")[0])
>>           self.assertEquals('test-vm', xpath_get_text(xml, 
>> "/domain/name")[0])
>> @@ -108,8 +108,8 @@ class VMTemplateTests(unittest.TestCase):
>>               host_memory = psutil.virtual_memory().total >> 10
>>           else:
>>               host_memory = psutil.TOTAL_PHYMEM >> 10
>> -        t = VMTemplate({'name': 'test-template', 'cdrom': self.iso,
>> -                        'memory': {'current': (host_memory >> 10) - 
>> 512}})
>> +        t = VMTemplate({'name': 'test-template', 'source_media': 
>> self.iso,
>> +                        'memory': {'current': (host_memory >> 10) - 
>> 512}}, True)
>>           try:
>>               xml = t.to_vm_xml('test-vm', vm_uuid, graphics=graphics)
>>           except Exception as e:
>> @@ -125,12 +125,12 @@ class VMTemplateTests(unittest.TestCase):
>>           args = {'name': 'test', 'os_distro': 'opensuse', 
>> 'os_version': '12.3',
>>                   'cpu_info': {'vcpus': 2, 'maxvcpus': 4},
>>                   'memory': {'current': 2048, 'maxmemory': 3072},
>> -                'networks': ['foo'], 'cdrom': self.iso, 'graphics': 
>> graphics}
>> -        t = VMTemplate(args)
>> +                'networks': ['foo'], 'source_media': self.iso, 
>> 'graphics': graphics}
>> +        t = VMTemplate(args, True)
>>           self.assertEquals(2, t.info.get('cpu_info', {}).get('vcpus'))
>>           self.assertEquals(4, t.info.get('cpu_info', 
>> {}).get('maxvcpus'))
>>           self.assertEquals(2048, t.info.get('memory').get('current'))
>>           self.assertEquals(3072, t.info.get('memory').get('maxmemory'))
>>           self.assertEquals(['foo'], t.info.get('networks'))
>> -        self.assertEquals(self.iso, t.info.get('cdrom'))
>> +        self.assertEquals(self.iso, t.info.get('source_media'))
>>           self.assertEquals(graphics, t.info.get('graphics'))
>
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/kimchi-devel

-- 

Ramon Nunes Medeiros
Kimchi Developer
Linux Technology Center Brazil
IBM Systems & Technology Group
Phone : +55 19 2132 7878
ramonn at br.ibm.com




More information about the Kimchi-devel mailing list