blob: cf72e49fd29651f0eceadd3f4f56cc5629cc5a85 [file] [log] [blame]
Jay Pipes13b479b2012-06-11 14:52:27 -04001# vim: tabstop=4 shiftwidth=4 softtabstop=4
2
ZhiQiang Fan39f97222013-09-20 04:49:44 +08003# Copyright 2012 OpenStack Foundation
Jay Pipes13b479b2012-06-11 14:52:27 -04004# All Rights Reserved.
5#
6# Licensed under the Apache License, Version 2.0 (the "License"); you may
7# not use this file except in compliance with the License. You may obtain
8# a copy of the License at
9#
10# http://www.apache.org/licenses/LICENSE-2.0
11#
12# Unless required by applicable law or agreed to in writing, software
13# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15# License for the specific language governing permissions and limitations
16# under the License.
17
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +090018import uuid
19
Sean Dague1937d092013-05-17 16:36:38 -040020from tempest.api.compute import base
Masayuki Igawa259c1132013-10-31 17:48:44 +090021from tempest.common.utils import data_utils
Tiago Mellodb525252013-02-07 14:51:38 -050022from tempest import exceptions
Matthew Treinishe3d26142013-11-26 19:14:58 +000023from tempest import test
Rohit Karajgi03530292012-04-24 17:00:50 -070024
25
ivan-zhuf2b00502013-10-18 10:06:52 +080026class FlavorsAdminTestJSON(base.BaseV2ComputeAdminTest):
Rohit Karajgi03530292012-04-24 17:00:50 -070027
28 """
29 Tests Flavors API Create and Delete that require admin privileges
30 """
31
Attila Fazekas19044d52013-02-16 07:35:06 +010032 _interface = 'json'
33
rajalakshmi-ganesanf344cc32012-12-31 20:02:27 +053034 @classmethod
Attila Fazekas19044d52013-02-16 07:35:06 +010035 def setUpClass(cls):
36 super(FlavorsAdminTestJSON, cls).setUpClass()
Matthew Treinishe3d26142013-11-26 19:14:58 +000037 if not test.is_extension_enabled('FlavorExtraData', 'compute'):
Jay Pipesf38eaac2012-06-21 13:37:35 -040038 msg = "FlavorExtraData extension not enabled."
ivan-zhu1feeb382013-01-24 10:14:39 +080039 raise cls.skipException(msg)
Rohit Karajgi03530292012-04-24 17:00:50 -070040
Attila Fazekas4ba36582013-02-12 08:26:17 +010041 cls.client = cls.os_adm.flavors_client
afazekascda40822013-03-25 16:50:41 +010042 cls.user_client = cls.os.flavors_client
Chris Yeoh8abacf32013-01-21 17:08:32 +103043 cls.flavor_name_prefix = 'test_flavor_'
Jay Pipesf38eaac2012-06-21 13:37:35 -040044 cls.ram = 512
45 cls.vcpus = 1
46 cls.disk = 10
47 cls.ephemeral = 10
Jay Pipesf38eaac2012-06-21 13:37:35 -040048 cls.swap = 1024
rajalakshmi-ganesanf344cc32012-12-31 20:02:27 +053049 cls.rxtx = 2
Rohit Karajgi03530292012-04-24 17:00:50 -070050
Attila Fazekas2883fd52013-03-10 12:05:21 +010051 def flavor_clean_up(self, flavor_id):
52 resp, body = self.client.delete_flavor(flavor_id)
53 self.assertEqual(resp.status, 202)
54 self.client.wait_for_resource_deletion(flavor_id)
55
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +090056 def _create_flavor(self, flavor_id):
Sean Dague4dd2c0b2013-01-03 17:50:28 -050057 # Create a flavor and ensure it is listed
58 # This operation requires the user to have 'admin' role
Masayuki Igawa259c1132013-10-31 17:48:44 +090059 flavor_name = data_utils.rand_name(self.flavor_name_prefix)
Chris Yeoh8abacf32013-01-21 17:08:32 +103060
Attila Fazekasf7f34f92013-08-01 17:01:44 +020061 # Create the flavor
Attila Fazekas2883fd52013-03-10 12:05:21 +010062 resp, flavor = self.client.create_flavor(flavor_name,
63 self.ram, self.vcpus,
64 self.disk,
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +090065 flavor_id,
Attila Fazekas2883fd52013-03-10 12:05:21 +010066 ephemeral=self.ephemeral,
67 swap=self.swap,
68 rxtx=self.rxtx)
69 self.addCleanup(self.flavor_clean_up, flavor['id'])
70 self.assertEqual(200, resp.status)
71 self.assertEqual(flavor['name'], flavor_name)
72 self.assertEqual(flavor['vcpus'], self.vcpus)
73 self.assertEqual(flavor['disk'], self.disk)
74 self.assertEqual(flavor['ram'], self.ram)
Attila Fazekas2883fd52013-03-10 12:05:21 +010075 self.assertEqual(flavor['swap'], self.swap)
76 self.assertEqual(flavor['rxtx_factor'], self.rxtx)
77 self.assertEqual(flavor['OS-FLV-EXT-DATA:ephemeral'],
78 self.ephemeral)
ivan-zhuae7c7c52013-10-21 22:13:22 +080079 self.assertEqual(flavor['os-flavor-access:is_public'], True)
Rohit Karajgi03530292012-04-24 17:00:50 -070080
Attila Fazekasf7f34f92013-08-01 17:01:44 +020081 # Verify flavor is retrieved
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +090082 resp, flavor = self.client.get_flavor_details(flavor['id'])
Attila Fazekas2883fd52013-03-10 12:05:21 +010083 self.assertEqual(resp.status, 200)
84 self.assertEqual(flavor['name'], flavor_name)
Rohit Karajgi03530292012-04-24 17:00:50 -070085
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +090086 return flavor['id']
87
Matthew Treinishe3d26142013-11-26 19:14:58 +000088 @test.attr(type='gate')
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +090089 def test_create_flavor_with_int_id(self):
90 flavor_id = data_utils.rand_int_id(start=1000)
91 new_flavor_id = self._create_flavor(flavor_id)
92 self.assertEqual(new_flavor_id, str(flavor_id))
93
Matthew Treinishe3d26142013-11-26 19:14:58 +000094 @test.attr(type='gate')
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +090095 def test_create_flavor_with_uuid_id(self):
96 flavor_id = str(uuid.uuid4())
97 new_flavor_id = self._create_flavor(flavor_id)
98 self.assertEqual(new_flavor_id, flavor_id)
99
Matthew Treinishe3d26142013-11-26 19:14:58 +0000100 @test.attr(type='gate')
Ken'ichi Ohmichi35772602013-11-14 15:03:27 +0900101 def test_create_flavor_with_none_id(self):
102 # If nova receives a request with None as flavor_id,
103 # nova generates flavor_id of uuid.
104 flavor_id = None
105 new_flavor_id = self._create_flavor(flavor_id)
106 self.assertEqual(new_flavor_id, str(uuid.UUID(new_flavor_id)))
107
Matthew Treinishe3d26142013-11-26 19:14:58 +0000108 @test.attr(type='gate')
Rohit Karajgi03530292012-04-24 17:00:50 -0700109 def test_create_flavor_verify_entry_in_list_details(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500110 # Create a flavor and ensure it's details are listed
111 # This operation requires the user to have 'admin' role
Masayuki Igawa259c1132013-10-31 17:48:44 +0900112 flavor_name = data_utils.rand_name(self.flavor_name_prefix)
113 new_flavor_id = data_utils.rand_int_id(start=1000)
Chris Yeoh8abacf32013-01-21 17:08:32 +1030114
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200115 # Create the flavor
Attila Fazekas2883fd52013-03-10 12:05:21 +0100116 resp, flavor = self.client.create_flavor(flavor_name,
117 self.ram, self.vcpus,
118 self.disk,
119 new_flavor_id,
120 ephemeral=self.ephemeral,
121 swap=self.swap,
122 rxtx=self.rxtx)
123 self.addCleanup(self.flavor_clean_up, flavor['id'])
124 flag = False
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200125 # Verify flavor is retrieved
Attila Fazekas2883fd52013-03-10 12:05:21 +0100126 resp, flavors = self.client.list_flavors_with_detail()
127 self.assertEqual(resp.status, 200)
128 for flavor in flavors:
129 if flavor['name'] == flavor_name:
130 flag = True
131 self.assertTrue(flag)
Rohit Karajgi03530292012-04-24 17:00:50 -0700132
Matthew Treinishe3d26142013-11-26 19:14:58 +0000133 @test.attr(type=['negative', 'gate'])
Rohit Karajgi03530292012-04-24 17:00:50 -0700134 def test_get_flavor_details_for_deleted_flavor(self):
Sean Dague4dd2c0b2013-01-03 17:50:28 -0500135 # Delete a flavor and ensure it is not listed
Rohit Karajgi03530292012-04-24 17:00:50 -0700136 # Create a test flavor
Masayuki Igawa259c1132013-10-31 17:48:44 +0900137 flavor_name = data_utils.rand_name(self.flavor_name_prefix)
138 new_flavor_id = data_utils.rand_int_id(start=1000)
Chris Yeoh8abacf32013-01-21 17:08:32 +1030139
140 resp, flavor = self.client.create_flavor(flavor_name,
Jay Pipesf38eaac2012-06-21 13:37:35 -0400141 self.ram,
142 self.vcpus, self.disk,
Chris Yeoh8abacf32013-01-21 17:08:32 +1030143 new_flavor_id,
rajalakshmi-ganesanf344cc32012-12-31 20:02:27 +0530144 ephemeral=self.ephemeral,
145 swap=self.swap,
146 rxtx=self.rxtx)
Rohit Karajgi03530292012-04-24 17:00:50 -0700147 # Delete the flavor
Attila Fazekas2883fd52013-03-10 12:05:21 +0100148 new_flavor_id = flavor['id']
149 resp_delete, body = self.client.delete_flavor(new_flavor_id)
Chang Bo Guofc77e932013-09-16 17:38:26 -0700150 self.assertEqual(200, resp.status)
151 self.assertEqual(202, resp_delete.status)
Rohit Karajgi03530292012-04-24 17:00:50 -0700152
Dan Prince8581f532012-05-30 17:11:55 -0400153 # Deleted flavors can be seen via detailed GET
Chris Yeoh8abacf32013-01-21 17:08:32 +1030154 resp, flavor = self.client.get_flavor_details(new_flavor_id)
Dan Prince8581f532012-05-30 17:11:55 -0400155 self.assertEqual(resp.status, 200)
Chris Yeoh8abacf32013-01-21 17:08:32 +1030156 self.assertEqual(flavor['name'], flavor_name)
Dan Prince8581f532012-05-30 17:11:55 -0400157
158 # Deleted flavors should not show up in a list however
Jay Pipesf38eaac2012-06-21 13:37:35 -0400159 resp, flavors = self.client.list_flavors_with_detail()
Dan Prince8581f532012-05-30 17:11:55 -0400160 self.assertEqual(resp.status, 200)
161 flag = True
162 for flavor in flavors:
Chris Yeoh8abacf32013-01-21 17:08:32 +1030163 if flavor['name'] == flavor_name:
Dan Prince8581f532012-05-30 17:11:55 -0400164 flag = False
165 self.assertTrue(flag)
Tiago Melloeda03b52012-08-22 23:47:29 -0300166
Matthew Treinishe3d26142013-11-26 19:14:58 +0000167 @test.attr(type='gate')
rajalakshmi-ganesanf344cc32012-12-31 20:02:27 +0530168 def test_create_list_flavor_without_extra_data(self):
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200169 # Create a flavor and ensure it is listed
170 # This operation requires the user to have 'admin' role
ivan-zhuae7c7c52013-10-21 22:13:22 +0800171
172 def verify_flavor_response_extension(flavor):
173 # check some extensions for the flavor create/show/detail response
174 self.assertEqual(flavor['swap'], '')
175 self.assertEqual(int(flavor['rxtx_factor']), 1)
176 self.assertEqual(int(flavor['OS-FLV-EXT-DATA:ephemeral']), 0)
177 self.assertEqual(flavor['os-flavor-access:is_public'], True)
178
Masayuki Igawa259c1132013-10-31 17:48:44 +0900179 flavor_name = data_utils.rand_name(self.flavor_name_prefix)
180 new_flavor_id = data_utils.rand_int_id(start=1000)
Chris Yeoh8abacf32013-01-21 17:08:32 +1030181
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200182 # Create the flavor
Attila Fazekas2883fd52013-03-10 12:05:21 +0100183 resp, flavor = self.client.create_flavor(flavor_name,
184 self.ram, self.vcpus,
185 self.disk,
186 new_flavor_id)
187 self.addCleanup(self.flavor_clean_up, flavor['id'])
188 self.assertEqual(200, resp.status)
189 self.assertEqual(flavor['name'], flavor_name)
190 self.assertEqual(flavor['ram'], self.ram)
191 self.assertEqual(flavor['vcpus'], self.vcpus)
192 self.assertEqual(flavor['disk'], self.disk)
193 self.assertEqual(int(flavor['id']), new_flavor_id)
ivan-zhuae7c7c52013-10-21 22:13:22 +0800194 verify_flavor_response_extension(flavor)
rajalakshmi-ganesanf344cc32012-12-31 20:02:27 +0530195
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200196 # Verify flavor is retrieved
Attila Fazekas2883fd52013-03-10 12:05:21 +0100197 resp, flavor = self.client.get_flavor_details(new_flavor_id)
198 self.assertEqual(resp.status, 200)
199 self.assertEqual(flavor['name'], flavor_name)
ivan-zhuae7c7c52013-10-21 22:13:22 +0800200 verify_flavor_response_extension(flavor)
201
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200202 # Check if flavor is present in list
ivan-zhuae7c7c52013-10-21 22:13:22 +0800203 resp, flavors = self.user_client.list_flavors_with_detail()
Attila Fazekas2883fd52013-03-10 12:05:21 +0100204 self.assertEqual(resp.status, 200)
205 for flavor in flavors:
206 if flavor['name'] == flavor_name:
ivan-zhuae7c7c52013-10-21 22:13:22 +0800207 verify_flavor_response_extension(flavor)
Attila Fazekas2883fd52013-03-10 12:05:21 +0100208 flag = True
209 self.assertTrue(flag)
rajalakshmi-ganesanf344cc32012-12-31 20:02:27 +0530210
Matthew Treinishe3d26142013-11-26 19:14:58 +0000211 @test.skip_because(bug="1209101")
212 @test.attr(type='gate')
Sumanth Nagadavalli3d955d92013-08-13 15:16:30 +0530213 def test_list_non_public_flavor(self):
214 # Create a flavor with os-flavor-access:is_public false should
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200215 # be present in list_details.
216 # This operation requires the user to have 'admin' role
Masayuki Igawa259c1132013-10-31 17:48:44 +0900217 flavor_name = data_utils.rand_name(self.flavor_name_prefix)
218 new_flavor_id = data_utils.rand_int_id(start=1000)
Chris Yeoh8abacf32013-01-21 17:08:32 +1030219
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200220 # Create the flavor
Attila Fazekas2883fd52013-03-10 12:05:21 +0100221 resp, flavor = self.client.create_flavor(flavor_name,
222 self.ram, self.vcpus,
223 self.disk,
224 new_flavor_id,
225 is_public="False")
226 self.addCleanup(self.flavor_clean_up, flavor['id'])
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200227 # Verify flavor is retrieved
Sumanth Nagadavalli3d955d92013-08-13 15:16:30 +0530228 flag = False
Attila Fazekas2883fd52013-03-10 12:05:21 +0100229 resp, flavors = self.client.list_flavors_with_detail()
230 self.assertEqual(resp.status, 200)
231 for flavor in flavors:
232 if flavor['name'] == flavor_name:
233 flag = True
Sumanth Nagadavalli3d955d92013-08-13 15:16:30 +0530234 self.assertTrue(flag)
235
236 # Verify flavor is not retrieved with other user
237 flag = False
238 resp, flavors = self.user_client.list_flavors_with_detail()
239 self.assertEqual(resp.status, 200)
240 for flavor in flavors:
241 if flavor['name'] == flavor_name:
242 flag = True
Attila Fazekas2883fd52013-03-10 12:05:21 +0100243 self.assertFalse(flag)
rajalakshmi-ganesanf344cc32012-12-31 20:02:27 +0530244
Matthew Treinishe3d26142013-11-26 19:14:58 +0000245 @test.attr(type='gate')
Ken'ichi Ohmichi32b1e6c2013-09-06 12:07:07 +0900246 def test_create_server_with_non_public_flavor(self):
247 # Create a flavor with os-flavor-access:is_public false
Masayuki Igawa259c1132013-10-31 17:48:44 +0900248 flavor_name = data_utils.rand_name(self.flavor_name_prefix)
249 new_flavor_id = data_utils.rand_int_id(start=1000)
Ken'ichi Ohmichi32b1e6c2013-09-06 12:07:07 +0900250
251 # Create the flavor
252 resp, flavor = self.client.create_flavor(flavor_name,
253 self.ram, self.vcpus,
254 self.disk,
255 new_flavor_id,
256 is_public="False")
257 self.addCleanup(self.flavor_clean_up, flavor['id'])
258 self.assertEqual(200, resp.status)
259
260 # Verify flavor is not used by other user
261 self.assertRaises(exceptions.BadRequest,
262 self.os.servers_client.create_server,
263 'test', self.image_ref, flavor['id'])
264
Matthew Treinishe3d26142013-11-26 19:14:58 +0000265 @test.attr(type='gate')
rajalakshmi-ganesanf344cc32012-12-31 20:02:27 +0530266 def test_list_public_flavor_with_other_user(self):
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200267 # Create a Flavor with public access.
268 # Try to List/Get flavor with another user
Masayuki Igawa259c1132013-10-31 17:48:44 +0900269 flavor_name = data_utils.rand_name(self.flavor_name_prefix)
270 new_flavor_id = data_utils.rand_int_id(start=1000)
Chris Yeoh8abacf32013-01-21 17:08:32 +1030271
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200272 # Create the flavor
Attila Fazekas2883fd52013-03-10 12:05:21 +0100273 resp, flavor = self.client.create_flavor(flavor_name,
274 self.ram, self.vcpus,
275 self.disk,
276 new_flavor_id,
277 is_public="True")
278 self.addCleanup(self.flavor_clean_up, flavor['id'])
279 flag = False
280 self.new_client = self.flavors_client
Attila Fazekasf7f34f92013-08-01 17:01:44 +0200281 # Verify flavor is retrieved with new user
Attila Fazekas2883fd52013-03-10 12:05:21 +0100282 resp, flavors = self.new_client.list_flavors_with_detail()
283 self.assertEqual(resp.status, 200)
284 for flavor in flavors:
285 if flavor['name'] == flavor_name:
286 flag = True
287 self.assertTrue(flag)
rajalakshmi-ganesanf344cc32012-12-31 20:02:27 +0530288
Matthew Treinishe3d26142013-11-26 19:14:58 +0000289 @test.attr(type='gate')
Tiago Mello0d835d22013-02-06 13:57:50 -0500290 def test_is_public_string_variations(self):
Masayuki Igawa259c1132013-10-31 17:48:44 +0900291 flavor_id_not_public = data_utils.rand_int_id(start=1000)
292 flavor_name_not_public = data_utils.rand_name(self.flavor_name_prefix)
293 flavor_id_public = data_utils.rand_int_id(start=1000)
294 flavor_name_public = data_utils.rand_name(self.flavor_name_prefix)
Tiago Mello0d835d22013-02-06 13:57:50 -0500295
Attila Fazekas2883fd52013-03-10 12:05:21 +0100296 # Create a non public flavor
297 resp, flavor = self.client.create_flavor(flavor_name_not_public,
298 self.ram, self.vcpus,
299 self.disk,
300 flavor_id_not_public,
301 is_public="False")
302 self.addCleanup(self.flavor_clean_up, flavor['id'])
Tiago Mello0d835d22013-02-06 13:57:50 -0500303
Attila Fazekas2883fd52013-03-10 12:05:21 +0100304 # Create a public flavor
305 resp, flavor = self.client.create_flavor(flavor_name_public,
306 self.ram, self.vcpus,
307 self.disk,
308 flavor_id_public,
309 is_public="True")
310 self.addCleanup(self.flavor_clean_up, flavor['id'])
Tiago Mello0d835d22013-02-06 13:57:50 -0500311
Attila Fazekas2883fd52013-03-10 12:05:21 +0100312 def _flavor_lookup(flavors, flavor_name):
313 for flavor in flavors:
314 if flavor['name'] == flavor_name:
315 return flavor
316 return None
Tiago Mello0d835d22013-02-06 13:57:50 -0500317
Attila Fazekas2883fd52013-03-10 12:05:21 +0100318 def _test_string_variations(variations, flavor_name):
319 for string in variations:
320 params = {'is_public': string}
321 r, flavors = self.client.list_flavors_with_detail(params)
322 self.assertEqual(r.status, 200)
323 flavor = _flavor_lookup(flavors, flavor_name)
Ionuț Arțăriși7f7d4522013-08-21 11:47:47 +0200324 self.assertIsNotNone(flavor)
Tiago Mello0d835d22013-02-06 13:57:50 -0500325
Attila Fazekas2883fd52013-03-10 12:05:21 +0100326 _test_string_variations(['f', 'false', 'no', '0'],
327 flavor_name_not_public)
Tiago Mello0d835d22013-02-06 13:57:50 -0500328
Attila Fazekas2883fd52013-03-10 12:05:21 +0100329 _test_string_variations(['t', 'true', 'yes', '1'],
330 flavor_name_public)
Tiago Mello0d835d22013-02-06 13:57:50 -0500331
Matthew Treinishe3d26142013-11-26 19:14:58 +0000332 @test.attr(type='gate')
Zhi Kun Liu20f13222013-09-03 00:36:38 +0800333 def test_create_flavor_using_string_ram(self):
Masayuki Igawa259c1132013-10-31 17:48:44 +0900334 flavor_name = data_utils.rand_name(self.flavor_name_prefix)
335 new_flavor_id = data_utils.rand_int_id(start=1000)
Zhi Kun Liu20f13222013-09-03 00:36:38 +0800336
337 ram = " 1024 "
338 resp, flavor = self.client.create_flavor(flavor_name,
339 ram, self.vcpus,
340 self.disk,
341 new_flavor_id)
342 self.addCleanup(self.flavor_clean_up, flavor['id'])
343 self.assertEqual(200, resp.status)
344 self.assertEqual(flavor['name'], flavor_name)
345 self.assertEqual(flavor['vcpus'], self.vcpus)
346 self.assertEqual(flavor['disk'], self.disk)
347 self.assertEqual(flavor['ram'], int(ram))
348 self.assertEqual(int(flavor['id']), new_flavor_id)
349
Matthew Treinishe3d26142013-11-26 19:14:58 +0000350 @test.attr(type=['negative', 'gate'])
Tiago Mellodb525252013-02-07 14:51:38 -0500351 def test_invalid_is_public_string(self):
352 self.assertRaises(exceptions.BadRequest,
353 self.client.list_flavors_with_detail,
354 {'is_public': 'invalid'})
355
Matthew Treinishe3d26142013-11-26 19:14:58 +0000356 @test.attr(type=['negative', 'gate'])
afazekascda40822013-03-25 16:50:41 +0100357 def test_create_flavor_as_user(self):
Masayuki Igawa259c1132013-10-31 17:48:44 +0900358 flavor_name = data_utils.rand_name(self.flavor_name_prefix)
359 new_flavor_id = data_utils.rand_int_id(start=1000)
afazekascda40822013-03-25 16:50:41 +0100360
361 self.assertRaises(exceptions.Unauthorized,
362 self.user_client.create_flavor,
363 flavor_name, self.ram, self.vcpus, self.disk,
364 new_flavor_id, ephemeral=self.ephemeral,
365 swap=self.swap, rxtx=self.rxtx)
366
Matthew Treinishe3d26142013-11-26 19:14:58 +0000367 @test.attr(type=['negative', 'gate'])
afazekascda40822013-03-25 16:50:41 +0100368 def test_delete_flavor_as_user(self):
369 self.assertRaises(exceptions.Unauthorized,
370 self.user_client.delete_flavor,
371 self.flavor_ref_alt)
Attila Fazekas4ba36582013-02-12 08:26:17 +0100372
Matthew Treinishe3d26142013-11-26 19:14:58 +0000373 @test.attr(type=['negative', 'gate'])
Zhi Kun Liu20f13222013-09-03 00:36:38 +0800374 def test_create_flavor_using_invalid_ram(self):
Masayuki Igawa259c1132013-10-31 17:48:44 +0900375 flavor_name = data_utils.rand_name(self.flavor_name_prefix)
376 new_flavor_id = data_utils.rand_int_id(start=1000)
Zhi Kun Liu20f13222013-09-03 00:36:38 +0800377
378 self.assertRaises(exceptions.BadRequest,
379 self.client.create_flavor,
380 flavor_name, -1, self.vcpus,
381 self.disk, new_flavor_id)
382
Matthew Treinishe3d26142013-11-26 19:14:58 +0000383 @test.attr(type=['negative', 'gate'])
Zhi Kun Liu20f13222013-09-03 00:36:38 +0800384 def test_create_flavor_using_invalid_vcpus(self):
Masayuki Igawa259c1132013-10-31 17:48:44 +0900385 flavor_name = data_utils.rand_name(self.flavor_name_prefix)
386 new_flavor_id = data_utils.rand_int_id(start=1000)
Zhi Kun Liu20f13222013-09-03 00:36:38 +0800387
388 self.assertRaises(exceptions.BadRequest,
389 self.client.create_flavor,
390 flavor_name, self.ram, 0,
391 self.disk, new_flavor_id)
392
Tiago Melloeda03b52012-08-22 23:47:29 -0300393
Attila Fazekas19044d52013-02-16 07:35:06 +0100394class FlavorsAdminTestXML(FlavorsAdminTestJSON):
395 _interface = 'xml'