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

Ramon Medeiros ramonn at linux.vnet.ibm.com
Thu Apr 7 18:05:54 UTC 2016



On 04/06/2016 05:47 PM, Aline Manera wrote:
>
>
> On 04/06/2016 01:18 AM, Ramon Medeiros wrote:
>> Update all tests to use source_media instead of disks and cdrom
>>
>> Signed-off-by: Ramon Medeiros <ramonn at linux.vnet.ibm.com>
>> ---
>>   tests/test_authorization.py |  4 +-
>>   tests/test_livemigration.py |  7 ++--
>>   tests/test_mockmodel.py     | 13 ++++---
>>   tests/test_model.py         | 94 
>> ++++++++++++++++++++++++---------------------
>>   tests/test_rest.py          | 36 ++++++++---------
>>   tests/test_template.py      | 47 ++++++++++-------------
>>   tests/test_vmtemplate.py    | 40 ++++++++++---------
>>   7 files changed, 124 insertions(+), 117 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..34fe853 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..41156f9 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,7 +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():
>> @@ -65,7 +66,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 +96,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 +116,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 +128,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 +148,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..52fdced 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': {
>
> Remove the 'base' information.
ok
>
>> +                        'name': 
>> '/plugins/kimchi/storagepools/default'},
>> +                        'format': 'qcow2'}], 'source_media': 
>> UBUNTU_ISO}
>> +
>>               inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 'test')
>>   @@ -162,7 +163,6 @@ 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')
>>   @@ -171,6 +171,9 @@ class ModelTests(unittest.TestCase):
>>                 # this snapshot should be deleted when its VM is deleted
>>               params = {'name': u'mysnap'}
>> +
>> +            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'])
>> @@ -208,7 +211,7 @@ class ModelTests(unittest.TestCase):
>>               self.assertEquals(snap, current_snap)
>>                 # update vm name
>> -            inst.vm_update('kimchi-vm', {'name': u'kimchi-vm-new'})
>> +            inst.vm_update(u'kimchi-vm', {'name': u'kimchi-vm-new'})
>>                 # Look up the first created snapshot from the renamed vm
>>               snap = inst.vmsnapshot_lookup(u'kimchi-vm-new', 
>> params['name'])
>> @@ -216,7 +219,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'])
>>   @@ -247,7 +249,7 @@ class ModelTests(unittest.TestCase):
>>               inst.vm_suspend(u'kimchi-vm')
>>             vms = inst.vms_get_list()
>> -        self.assertFalse('kimchi-vm' in vms)
>> +        self.assertFalse(u'kimchi-vm' in vms)
>>         @unittest.skipUnless(utils.running_as_root(), 'Must be run as 
>> root')
>>       def test_image_based_template(self):
>> @@ -259,10 +261,14 @@ 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)
>> -            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"):
>
> Same I commented before. base-vol.img is only based during the tests 
> and should not exist at this point.
> So why are you adding this condition here?
removed
>
>> +                task_id = inst.storagevolumes_create('default', 
>> params)['id']
>> + rollback.prependDefer(inst.storagevolume_delete, 'default',
>> +                                      vol)
>> +                inst.task_wait(task_id)
>> +                self.assertEquals('finished',
>> + inst.task_lookup(task_id)['status'])
>>               vol_path = inst.storagevolume_lookup('default', 
>> vol)['path']
>>                 # Create template based on IMG file
>> @@ -272,9 +278,9 @@ class ModelTests(unittest.TestCase):
>>                            "graphics": {"type": "vnc", "listen": 
>> "127.0.0.1"},
>>                            "networks": ["default"], "memory": 
>> {'current': 1024},
>>                            "folder": [], "icon": "images/icon-vm.png",
>> -                         "cdrom": "", "os_distro": "unknown",
>> -                         "os_version": "unknown",
>> -                         "disks": [{"base": vol_path, "size": 10,
>> +                         "os_distro": "unknown", "os_version": 
>> "unknown",
>> +                         "source_media": vol_path,
>> +                         "disks": [{"size": 10,
>>                                       "format": "qcow2",
>>                                       "pool": {"name": pool_uri}}]}
>>   @@ -299,7 +305,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 +335,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 +356,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 +472,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 +516,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 +541,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 +630,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}
>
> Why did you add format in the parameters?
removed
>
>> +
>>               inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 'test')
>>   @@ -683,9 +690,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}
>
> Same here.
done
>
>> inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 'test')
>>   @@ -710,10 +717,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}
>> +
>
> Why did you change the format value here?
>
removed
>> inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 'test')
>>   @@ -736,9 +743,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}
>
> And added here.
removed
>
>> inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 'test')
>>   @@ -758,7 +765,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:
>> @@ -793,11 +800,13 @@ class ModelTests(unittest.TestCase):
>>             # template disk format must be qcow2 because vmsnapshot
>>           # 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'}}]}
>> +        orig_params = {
>> +            'name': 'test', 'memory': {'current': 1024},
>> +            'cpu_info': {'vcpus': 1},
>> +            '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 +1043,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}
>
> You can continue to pass 'disks: []'
removed
>
>> inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 'test')
>>   @@ -1060,7 +1069,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}
>
> Same here.
removed
>
>> inst.templates_create(params)
>>               rollback.prependDefer(inst.template_delete, 'test')
>>   @@ -1131,8 +1140,7 @@ class ModelTests(unittest.TestCase):
>>           with RollbackContext() as rollback:
>>               params = {
>>                   'name': 'test',
>> -                'disks': [],
>
> And here.
removed
>
>> -                '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..a30b0b1 100644
>> --- a/tests/test_rest.py
>> +++ b/tests/test_rest.py
>> @@ -18,7 +18,6 @@
>>   # 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 copy
>>   import json
>>   import os
>>   import re
>> @@ -107,7 +106,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 +133,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 +290,9 @@ class RestTests(unittest.TestCase):
>>         def test_vm_lifecycle(self):
>>           # Create a Template
>> -        req = json.dumps({'name': 'test', 'disks': DISKS,
>> +        req = json.dumps({'name': 'test', 'source_media': fake_iso,
>>                             'icon': 
>> 'plugins/kimchi/images/icon-debian.png',
>> -                          'cdrom': 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,8 @@ 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})
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>>   @@ -954,8 +953,9 @@ class RestTests(unittest.TestCase):
>>             # Create template fails because SCSI volume is missing
>>           tmpl_params = {
>> -            'name': 'test_fc_pool', 'cdrom': fake_iso, 'disks': 
>> [{'pool': {
>> -                'name': '/plugins/kimchi/storagepools/scsi_fc_pool'}}]}
>> +            'name': 'test_fc_pool', 'source_media': fake_iso,
>> +            'disks': [{'pool': {'name':
>> + '/plugins/kimchi/storagepools/scsi_fc_pool'}}]}
>>             req = json.dumps(tmpl_params)
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>> @@ -998,7 +998,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 +1039,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 +1110,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 +1148,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..d9e7f36 100644
>> --- a/tests/test_template.py
>> +++ b/tests/test_template.py
>> @@ -18,6 +18,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 json
>>   import os
>>   import psutil
>> @@ -38,7 +39,7 @@ host = None
>>   port = None
>>   ssl_port = None
>>   cherrypy_port = None
>> -
>> +MOCK_ISO = "/tmp/mock.iso"
>>   DEFAULT_POOL = u'/plugins/kimchi/storagepools/default-pool'
>>     @@ -53,6 +54,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(MOCK_ISO, True, '14.04', 'ubuntu')
>>       def tearDownModule():
>> @@ -79,7 +81,7 @@ class TemplateTests(unittest.TestCase):
>>           self.assertEquals(400, resp.status)
>>             # Create a template
>> -        t = {'name': 'test', 'cdrom': '/tmp/mock.iso'}
>> +        t = {'name': 'test', 'source_media': MOCK_ISO}
>>           req = json.dumps(t)
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>> @@ -117,22 +119,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': 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')
>> +        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': MOCK_ISO, 
>> 'disks': [{
>>                'index': 0, 'size': 10, 'format': 'vmdk', 'pool': {
>>                    'name': DEFAULT_POOL}}]}
>>           req = json.dumps(t)
>> @@ -149,7 +149,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': MOCK_ISO,
>>                'memory': {'current': memory}}
>>           req = json.dumps(t)
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>> @@ -158,7 +158,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': MOCK_ISO}
>>           req = json.dumps(t)
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>> @@ -328,7 +328,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': MOCK_ISO}
>>           req = json.dumps(t)
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>> @@ -364,7 +364,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': MOCK_ISO}
>>           req = json.dumps(t)
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>
>> @@ -410,13 +410,16 @@ 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}]})
>
> Why index is needed?
removed
>
>>               if req is not None:
>>                   resp = 
>> self.request('/plugins/kimchi/templates/test', req,
>> @@ -425,7 +428,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}}]}
>
> Same here.
removed
>
>>           req = json.dumps(disk_data)
>>           resp = self.request('/plugins/kimchi/templates/test', req, 
>> 'PUT')
>> @@ -453,12 +456,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': MOCK_ISO,
>> +             'networks': ['nat-network']}
>
> Why did you remove disks parameter?
wasn't necessary
>
>>           req = json.dumps(t)
>>           resp = self.request('/plugins/kimchi/templates', req, 'POST')
>>           self.assertEquals(201, resp.status)
>> @@ -482,7 +481,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'])
>
> Why did you remove it? It confirms the source_media was properly used 
> to set the cdrom value.

i removed the iso before the code now, seems to work
>
>> diff --git a/tests/test_vmtemplate.py b/tests/test_vmtemplate.py
>> index eed58b0..d50dbd2 100644
>> --- a/tests/test_vmtemplate.py
>> +++ b/tests/test_vmtemplate.py
>
> As we discussed offline, vmtemplate will keep the same but all those 
> changes will not be needed anymore.
ok
>
>> @@ -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,7 +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 +46,52 @@ 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 +110,9 @@ 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 +128,13 @@ 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'))
>
> Please, also add new tests to verify the source_media works!
> Create a template with an ISO file and verify cdrom parameter is 
> filled with the right value.
> Same for an IMG file.
>
ok

-- 

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