python-novaclient/novaclient/tests/v1_1/test_flavors.py

145 lines
5.4 KiB
Python

from novaclient import exceptions
from novaclient.v1_1 import flavors
from novaclient.tests import utils
from novaclient.tests.v1_1 import fakes
cs = fakes.FakeClient()
class FlavorsTest(utils.TestCase):
def test_list_flavors(self):
fl = cs.flavors.list()
cs.assert_called('GET', '/flavors/detail')
for flavor in fl:
self.assertTrue(isinstance(flavor, flavors.Flavor))
def test_list_flavors_undetailed(self):
fl = cs.flavors.list(detailed=False)
cs.assert_called('GET', '/flavors')
for flavor in fl:
self.assertTrue(isinstance(flavor, flavors.Flavor))
def test_list_flavors_is_public(self):
fl = cs.flavors.list(is_public=None)
cs.assert_called('GET', '/flavors/detail?is_public=None')
for flavor in fl:
self.assertTrue(isinstance(flavor, flavors.Flavor))
def test_get_flavor_details(self):
f = cs.flavors.get(1)
cs.assert_called('GET', '/flavors/1')
self.assertTrue(isinstance(f, flavors.Flavor))
self.assertEqual(f.ram, 256)
self.assertEqual(f.disk, 10)
self.assertEqual(f.ephemeral, 10)
self.assertEqual(f.is_public, True)
def test_get_flavor_details_alphanum_id(self):
f = cs.flavors.get('aa1')
cs.assert_called('GET', '/flavors/aa1')
self.assertTrue(isinstance(f, flavors.Flavor))
self.assertEqual(f.ram, 128)
self.assertEqual(f.disk, 0)
self.assertEqual(f.ephemeral, 0)
self.assertEqual(f.is_public, True)
def test_get_flavor_details_diablo(self):
f = cs.flavors.get(3)
cs.assert_called('GET', '/flavors/3')
self.assertTrue(isinstance(f, flavors.Flavor))
self.assertEqual(f.ram, 256)
self.assertEqual(f.disk, 10)
self.assertEqual(f.ephemeral, 'N/A')
self.assertEqual(f.is_public, 'N/A')
def test_find(self):
f = cs.flavors.find(ram=256)
cs.assert_called('GET', '/flavors/detail')
self.assertEqual(f.name, '256 MB Server')
f = cs.flavors.find(disk=20)
self.assertEqual(f.name, '512 MB Server')
self.assertRaises(exceptions.NotFound, cs.flavors.find, disk=12345)
def test_create(self):
f = cs.flavors.create("flavorcreate", 512, 1, 10, 1234, ephemeral=10,
is_public=False)
body = {
"flavor": {
"name": "flavorcreate",
"ram": 512,
"vcpus": 1,
"disk": 10,
"OS-FLV-EXT-DATA:ephemeral": 10,
"id": 1234,
"swap": 0,
"rxtx_factor": 1.0,
"os-flavor-access:is_public": False,
}
}
cs.assert_called('POST', '/flavors', body)
self.assertTrue(isinstance(f, flavors.Flavor))
def test_create_ephemeral_ispublic_defaults(self):
f = cs.flavors.create("flavorcreate", 512, 1, 10, 1234)
body = {
"flavor": {
"name": "flavorcreate",
"ram": 512,
"vcpus": 1,
"disk": 10,
"OS-FLV-EXT-DATA:ephemeral": 0,
"id": 1234,
"swap": 0,
"rxtx_factor": 1.0,
"os-flavor-access:is_public": True,
}
}
cs.assert_called('POST', '/flavors', body)
self.assertTrue(isinstance(f, flavors.Flavor))
def test_invalid_parameters_create(self):
self.assertRaises(exceptions.CommandError, cs.flavors.create,
"flavorcreate", "invalid", 1, 10, 1234, swap=0,
ephemeral=0, rxtx_factor=1.0, is_public=True)
self.assertRaises(exceptions.CommandError, cs.flavors.create,
"flavorcreate", 512, "invalid", 10, 1234, swap=0,
ephemeral=0, rxtx_factor=1.0, is_public=True)
self.assertRaises(exceptions.CommandError, cs.flavors.create,
"flavorcreate", 512, 1, "invalid", 1234, swap=0,
ephemeral=0, rxtx_factor=1.0, is_public=True)
self.assertRaises(exceptions.CommandError, cs.flavors.create,
"flavorcreate", 512, 1, 10, 1234, swap="invalid",
ephemeral=0, rxtx_factor=1.0, is_public=True)
self.assertRaises(exceptions.CommandError, cs.flavors.create,
"flavorcreate", 512, 1, 10, 1234, swap=0,
ephemeral="invalid", rxtx_factor=1.0, is_public=True)
self.assertRaises(exceptions.CommandError, cs.flavors.create,
"flavorcreate", 512, 1, 10, 1234, swap=0,
ephemeral=0, rxtx_factor="invalid", is_public=True)
self.assertRaises(exceptions.CommandError, cs.flavors.create,
"flavorcreate", 512, 1, 10, 1234, swap=0,
ephemeral=0, rxtx_factor=1.0, is_public='invalid')
def test_delete(self):
cs.flavors.delete("flavordelete")
cs.assert_called('DELETE', '/flavors/flavordelete')
def test_set_keys(self):
f = cs.flavors.get(1)
f.set_keys({'k1': 'v1'})
cs.assert_called('POST', '/flavors/1/os-extra_specs',
{"extra_specs": {'k1': 'v1'}})
def test_unset_keys(self):
f = cs.flavors.get(1)
f.unset_keys(['k1'])
cs.assert_called('DELETE', '/flavors/1/os-extra_specs/k1')