blob: 7f4c4517faf314cb5c40a526fc6e1be568e8098e [file] [log] [blame]
Daryl Walleck73a9e7a2011-11-15 17:43:31 -06001from nose.plugins.attrib import attr
Daryl Wallecked8bef32011-12-05 23:02:08 -06002from tempest import openstack
3from tempest.common.utils.data_utils import rand_name
Daryl Walleck73a9e7a2011-11-15 17:43:31 -06004import unittest2 as unittest
Daryl Wallecked8bef32011-12-05 23:02:08 -06005import tempest.config
Daryl Walleck73a9e7a2011-11-15 17:43:31 -06006
Jay Pipes7f757632011-12-02 15:53:32 -05007# Some module-level skip conditions
8create_image_enabled = False
9
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060010
11class ImagesTest(unittest.TestCase):
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060012
13 @classmethod
14 def setUpClass(cls):
15 cls.os = openstack.Manager()
16 cls.client = cls.os.images_client
17 cls.servers_client = cls.os.servers_client
Jay Pipes7f757632011-12-02 15:53:32 -050018 cls.config = cls.os.config
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060019 cls.image_ref = cls.config.env.image_ref
20 cls.flavor_ref = cls.config.env.flavor_ref
Jay Pipes7f757632011-12-02 15:53:32 -050021 create_image_enabled = cls.config.env.create_image_enabled
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060022
23 def _parse_image_id(self, image_ref):
24 temp = image_ref.rsplit('/')
25 return temp[6]
26
Daryl Wallecked8bef32011-12-05 23:02:08 -060027 @unittest.skipIf(not imaging_enabled,
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060028 'Environment unable to create images.')
Daryl Wallecked8bef32011-12-05 23:02:08 -060029 @attr(type='smoke')
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060030 def test_create_delete_image(self):
31 """An image for the provided server should be created"""
32 server_name = rand_name('server')
33 resp, server = self.servers_client.create_server(server_name,
34 self.image_ref,
35 self.flavor_ref)
36 self.servers_client.wait_for_server_status(server['id'], 'ACTIVE')
37
38 #Create a new image
39 name = rand_name('image')
Daryl Wallecked8bef32011-12-05 23:02:08 -060040 meta = {'image_type': 'test'}
41 resp, body = self.client.create_image(server['id'], name, meta)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060042 image_id = self._parse_image_id(resp['location'])
Daryl Walleck416af922011-11-22 22:28:33 -060043 self.client.wait_for_image_resp_code(image_id, 200)
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060044 self.client.wait_for_image_status(image_id, 'ACTIVE')
45
46 #Verify the image was created correctly
47 resp, image = self.client.get_image(image_id)
48 self.assertEqual(name, image['name'])
Daryl Wallecked8bef32011-12-05 23:02:08 -060049 self.assertEqual('test', image['metadata']['image_type'])
50
51 #Verify minRAM and minDisk values are the same as the original image
52 resp, original_image = self.client.get_image(self.image_ref)
53 self.assertEqual(original_image['minRam'], image['minRam'])
54 self.assertEqual(original_image['minDisk'], image['minDisk'])
Daryl Walleck73a9e7a2011-11-15 17:43:31 -060055
56 #Teardown
57 self.client.delete_image(image['id'])
58 self.servers_client.delete_server(server['id'])