blob: fca83bea80ae150a0af5e25a3600a1864adf1d14 [file] [log] [blame]
Daryl Wallecke36d5002012-03-28 09:56:10 -05001from tempest.common.utils.data_utils import rand_name
2from tempest import exceptions
3from tempest import openstack
4import tempest.config
5from tempest.tests import utils
6import unittest2 as unittest
7from nose.plugins.attrib import attr
8
9
10class TestServerDiskConfig(unittest.TestCase):
11
David Kranz1b3bf7f2012-04-12 14:39:23 -040012 resize_available = tempest.config.TempestConfig().compute.resize_available
13
Daryl Wallecke36d5002012-03-28 09:56:10 -050014 @classmethod
15 def setUpClass(cls):
16 cls.os = openstack.Manager()
17 cls.client = cls.os.servers_client
18 extensions_client = cls.os.extensions_client
19 cls.config = cls.os.config
20 cls.image_ref = cls.config.compute.image_ref
21 cls.image_ref_alt = cls.config.compute.image_ref_alt
22 cls.flavor_ref = cls.config.compute.flavor_ref
23 cls.flavor_ref_alt = cls.config.compute.flavor_ref_alt
24 cls.disk_config = extensions_client.is_enabled('DiskConfig')
25
26 @attr(type='positive')
27 @utils.skip_unless_attr('disk_config', 'Disk config extension not enabled')
28 def test_create_server_with_manual_disk_config(self):
29 """A server should be created with manual disk config"""
30 name = rand_name('server')
31 resp, server = self.client.create_server(name,
32 self.image_ref,
33 self.flavor_ref,
34 disk_config='MANUAL')
35
36 #Wait for the server to become active
37 self.client.wait_for_server_status(server['id'], 'ACTIVE')
38
39 #Verify the specified attributes are set correctly
40 resp, server = self.client.get_server(server['id'])
41 self.assertEqual('MANUAL', server['OS-DCF:diskConfig'])
42
43 #Delete the server
44 resp, body = self.client.delete_server(server['id'])
45
46 @attr(type='positive')
47 @utils.skip_unless_attr('disk_config', 'Disk config extension not enabled')
48 def test_create_server_with_auto_disk_config(self):
49 """A server should be created with auto disk config"""
50 name = rand_name('server')
51 resp, server = self.client.create_server(name,
52 self.image_ref,
53 self.flavor_ref,
54 disk_config='AUTO')
55
56 #Wait for the server to become active
57 self.client.wait_for_server_status(server['id'], 'ACTIVE')
58
59 #Verify the specified attributes are set correctly
60 resp, server = self.client.get_server(server['id'])
61 self.assertEqual('AUTO', server['OS-DCF:diskConfig'])
62
63 #Delete the server
64 resp, body = self.client.delete_server(server['id'])
65
66 @attr(type='positive')
67 @utils.skip_unless_attr('disk_config', 'Disk config extension not enabled')
68 def test_rebuild_server_with_manual_disk_config(self):
69 """A server should be rebuilt using the manual disk config option"""
70 name = rand_name('server')
71 resp, server = self.client.create_server(name,
72 self.image_ref,
73 self.flavor_ref,
74 disk_config='AUTO')
75
76 #Wait for the server to become active
77 self.client.wait_for_server_status(server['id'], 'ACTIVE')
78
79 #Verify the specified attributes are set correctly
80 resp, server = self.client.get_server(server['id'])
81 self.assertEqual('AUTO', server['OS-DCF:diskConfig'])
82
83 resp, server = self.client.rebuild(server['id'],
84 self.image_ref_alt,
85 disk_config='MANUAL')
86
87 #Wait for the server to become active
88 self.client.wait_for_server_status(server['id'], 'ACTIVE')
89
90 #Verify the specified attributes are set correctly
91 resp, server = self.client.get_server(server['id'])
92 self.assertEqual('MANUAL', server['OS-DCF:diskConfig'])
93
94 #Delete the server
95 resp, body = self.client.delete_server(server['id'])
96
97 @attr(type='positive')
98 @utils.skip_unless_attr('disk_config', 'Disk config extension not enabled')
99 def test_rebuild_server_with_auto_disk_config(self):
100 """A server should be rebuilt using the auto disk config option"""
101 name = rand_name('server')
102 resp, server = self.client.create_server(name,
103 self.image_ref,
104 self.flavor_ref,
105 disk_config='MANUAL')
106
107 #Wait for the server to become active
108 self.client.wait_for_server_status(server['id'], 'ACTIVE')
109
110 #Verify the specified attributes are set correctly
111 resp, server = self.client.get_server(server['id'])
112 self.assertEqual('MANUAL', server['OS-DCF:diskConfig'])
113
114 resp, server = self.client.rebuild(server['id'],
115 self.image_ref_alt,
116 disk_config='AUTO')
117
118 #Wait for the server to become active
119 self.client.wait_for_server_status(server['id'], 'ACTIVE')
120
121 #Verify the specified attributes are set correctly
122 resp, server = self.client.get_server(server['id'])
123 self.assertEqual('AUTO', server['OS-DCF:diskConfig'])
124
125 #Delete the server
126 resp, body = self.client.delete_server(server['id'])
127
128 @attr(type='positive')
129 @utils.skip_unless_attr('disk_config', 'Disk config extension not enabled')
David Kranz1b3bf7f2012-04-12 14:39:23 -0400130 @unittest.skipIf(not resize_available, 'Resize not available.')
Daryl Wallecke36d5002012-03-28 09:56:10 -0500131 def test_resize_server_from_manual_to_auto(self):
132 """A server should be resized from manual to auto disk config"""
133 name = rand_name('server')
134 resp, server = self.client.create_server(name,
135 self.image_ref,
136 self.flavor_ref,
137 disk_config='MANUAL')
138
139 #Wait for the server to become active
140 self.client.wait_for_server_status(server['id'], 'ACTIVE')
141
142 #Resize with auto option
143 self.client.resize(server['id'], self.flavor_ref_alt,
144 disk_config='AUTO')
145 self.client.wait_for_server_status(server['id'], 'VERIFY_RESIZE')
146 self.client.confirm_resize(server['id'])
147 self.client.wait_for_server_status(server['id'], 'ACTIVE')
148
149 resp, server = self.client.get_server(server['id'])
150 self.assertEqual('AUTO', server['OS-DCF:diskConfig'])
151
152 #Delete the server
153 resp, body = self.client.delete_server(server['id'])
154
155 @attr(type='positive')
156 @utils.skip_unless_attr('disk_config', 'Disk config extension not enabled')
David Kranz1b3bf7f2012-04-12 14:39:23 -0400157 @unittest.skipIf(not resize_available, 'Resize not available.')
Daryl Wallecke36d5002012-03-28 09:56:10 -0500158 def test_resize_server_from_auto_to_manual(self):
159 """A server should be resized from auto to manual disk config"""
160 name = rand_name('server')
161 resp, server = self.client.create_server(name,
162 self.image_ref,
163 self.flavor_ref,
164 disk_config='AUTO')
165
166 #Wait for the server to become active
167 self.client.wait_for_server_status(server['id'], 'ACTIVE')
168
169 #Resize with manual option
170 self.client.resize(server['id'], self.flavor_ref_alt,
171 disk_config='MANUAL')
172 self.client.wait_for_server_status(server['id'], 'VERIFY_RESIZE')
173 self.client.confirm_resize(server['id'])
174 self.client.wait_for_server_status(server['id'], 'ACTIVE')
175
176 resp, server = self.client.get_server(server['id'])
177 self.assertEqual('MANUAL', server['OS-DCF:diskConfig'])
178
179 #Delete the server
180 resp, body = self.client.delete_server(server['id'])