32
32
ATOMNS = "{http://www.w3.org/2005/Atom}"
35
def stub_flavor(flavorid, name, memory_mb="256", local_gb="10"):
37
"flavorid": str(flavorid),
39
"memory_mb": memory_mb,
44
def return_instance_type_by_flavor_id(context, flavorid):
45
return stub_flavor(flavorid, "flavor %s" % (flavorid,))
48
def return_instance_types(context, num=2):
50
for i in xrange(1, num + 1):
51
name = "flavor %s" % (i,)
52
instance_types[name] = stub_flavor(i, name)
51
def fake_instance_type_get_by_flavor_id(context, flavorid):
52
return FAKE_FLAVORS['flavor %s' % flavorid]
55
def fake_instance_type_get_all(context, inactive=False, filters=None):
56
def reject_min(db_attr, filter_attr):
57
return filter_attr in filters and\
58
int(flavor[db_attr]) < int(filters[filter_attr])
60
filters = filters or {}
61
for flavor in FAKE_FLAVORS.values():
62
if reject_min('memory_mb', 'min_memory_mb'):
64
elif reject_min('local_gb', 'min_local_gb'):
70
def empty_instance_type_get_all(context, inactive=False, filters=None):
56
74
def return_instance_type_not_found(context, flavor_id):
289
304
self.assertEqual(flavors, expected)
306
def test_get_flavor_list_filter_min_ram_v1_1(self):
307
"""Flavor lists may be filtered by minRam"""
308
req = webob.Request.blank('/v1.1/fake/flavors?minRam=512')
309
req.environ['api.version'] = '1.1'
310
res = req.get_response(fakes.wsgi_app())
311
self.assertEqual(res.status_int, 200)
312
flavor = json.loads(res.body)
321
"href": "http://localhost/v1.1/fake/flavors/2",
325
"href": "http://localhost/fake/flavors/2",
331
self.assertEqual(flavor, expected)
333
def test_get_flavor_list_filter_min_disk(self):
334
"""Flavor lists may be filtered by minRam"""
335
req = webob.Request.blank('/v1.1/fake/flavors?minDisk=20')
336
req.environ['api.version'] = '1.1'
337
res = req.get_response(fakes.wsgi_app())
338
self.assertEqual(res.status_int, 200)
339
flavor = json.loads(res.body)
348
"href": "http://localhost/v1.1/fake/flavors/2",
352
"href": "http://localhost/fake/flavors/2",
358
self.assertEqual(flavor, expected)
360
def test_get_flavor_list_detail_min_ram_and_min_disk_v1_1(self):
361
"""Tests that filtering work on flavor details and that minRam and
362
minDisk filters can be combined
364
req = webob.Request.blank(
365
'/v1.1/fake/flavors/detail?minRam=256&minDisk=20')
366
req.environ['api.version'] = '1.1'
367
res = req.get_response(fakes.wsgi_app())
368
self.assertEqual(res.status_int, 200)
369
flavor = json.loads(res.body)
384
"href": "http://localhost/v1.1/fake/flavors/2",
388
"href": "http://localhost/fake/flavors/2",
394
self.assertEqual(flavor, expected)
396
def test_get_flavor_list_detail_bogus_min_ram_v1_1(self):
397
"""Tests that bogus minRam filtering values are ignored"""
398
req = webob.Request.blank(
399
'/v1.1/fake/flavors/detail?minRam=16GB')
400
req.environ['api.version'] = '1.1'
401
res = req.get_response(fakes.wsgi_app())
402
self.assertEqual(res.status_int, 200)
403
flavor = json.loads(res.body)
418
"href": "http://localhost/v1.1/fake/flavors/1",
422
"href": "http://localhost/fake/flavors/1",
438
"href": "http://localhost/v1.1/fake/flavors/2",
442
"href": "http://localhost/fake/flavors/2",
448
self.assertEqual(flavor, expected)
450
def test_get_flavor_list_detail_bogus_min_disk_v1_1(self):
451
"""Tests that bogus minDisk filtering values are ignored"""
452
req = webob.Request.blank(
453
'/v1.1/fake/flavors/detail?minDisk=16GB')
454
req.environ['api.version'] = '1.1'
455
res = req.get_response(fakes.wsgi_app())
456
self.assertEqual(res.status_int, 200)
457
flavor = json.loads(res.body)
472
"href": "http://localhost/v1.1/fake/flavors/1",
476
"href": "http://localhost/fake/flavors/1",
492
"href": "http://localhost/v1.1/fake/flavors/2",
496
"href": "http://localhost/fake/flavors/2",
502
self.assertEqual(flavor, expected)
292
505
class FlavorsXMLSerializationTest(test.TestCase):