
From: Royce Lv <lvroyce@linux.vnet.ibm.com> Signed-off-by: Royce Lv <lvroyce@linux.vnet.ibm.com> --- tests/test_model.py | 25 +++++++++++++++++++++++++ tests/test_rest.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/tests/test_model.py b/tests/test_model.py index 30daafa..3bc0f7f 100644 --- a/tests/test_model.py +++ b/tests/test_model.py @@ -107,6 +107,31 @@ class ModelTests(unittest.TestCase): self.assertFalse('kimchi-vm' in vms) @unittest.skipUnless(utils.running_as_root(), 'Must be run as root') + def test_image_based_template(self): + disk_path = '/tmp/existent2.img' + open(disk_path, 'w').close() + + inst = model.Model(objstore_loc=self.tmp_store) + + with RollbackContext() as rollback: + params = {'name': 'test', 'disks': [{'base': disk_path}]} + inst.templates_create(params) + rollback.prependDefer(inst.template_delete, 'test') + + params = {'name': 'kimchi-vm', 'template': '/templates/test'} + inst.vms_create(params) + rollback.prependDefer(inst.vm_delete, 'kimchi-vm') + + vms = inst.vms_get_list() + self.assertTrue('kimchi-vm' in vms) + + inst.vm_start('kimchi-vm') + rollback.prependDefer(inst.vm_poweroff, 'kimchi-vm') + + info = inst.vm_lookup('kimchi-vm') + self.assertEquals('running', info['state']) + + @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': self.kimchi_iso} diff --git a/tests/test_rest.py b/tests/test_rest.py index 97668e7..b58fc43 100644 --- a/tests/test_rest.py +++ b/tests/test_rest.py @@ -854,6 +854,27 @@ class RestTests(unittest.TestCase): resp = json.loads(resp.read()) self.assertIn(u"KCHVM0012E", resp['reason']) + def test_create_vm_with_img_based_template(self): + resp = json.loads( + self.request('/storagepools/default/storagevolumes').read()) + self.assertEquals(0, len(resp)) + + # Create a Template + mock_base = '/tmp/mock.img' + open(mock_base, 'w').close() + req = json.dumps({'name': 'test', 'disks': [{'base':mock_base}]}) + resp = self.request('/templates', req, 'POST') + self.assertEquals(201, resp.status) + + req = json.dumps({'template': '/templates/test'}) + json.loads(self.request('/vms', req, 'POST').read()) + + # Test storage volume created with backing store of base file + resp = json.loads( + self.request('/storagepools/default/storagevolumes').read()) + self.assertEquals(1, len(resp)) + self.assertEquals(mock_base, resp[0]['base']['path']) + def test_get_storagepools(self): storagepools = json.loads(self.request('/storagepools').read()) self.assertEquals(2, len(storagepools)) @@ -1076,6 +1097,15 @@ class RestTests(unittest.TestCase): resp = self.request('/templates', req, 'POST') self.assertEquals(400, resp.status) + # Create an image based template + open('/tmp/mock.img', 'w').close() + t = {'name': 'test_img_template', 'os_distro': 'ImagineOS', + 'os_version': '1.0', 'memory': 1024, 'cpus': 1, + 'storagepool': '/storagepools/alt', 'disks':[{'base':'/tmp/mock.img'}]} + req = json.dumps(t) + resp = self.request('/templates', req, 'POST') + self.assertEquals(201, resp.status) + # Create a template graphics = {'type': 'spice', 'listen': '127.0.0.1'} t = {'name': 'test', 'os_distro': 'ImagineOS', -- 1.8.3.2