Validate rxtx_factor as a float.

Updates the rxtx_factor validations in the instance_types modules so
that rxtx_factor is validated as a float. Given that rxtx_factor is stored
as a float in the database this makes sense... and also adheres
to some of the extension documentation as well (although some of
the extension docs were incorrect as well).

Previously rxtx_factor was being cast into an int which caused it to
be stored and displayed incorrectly via the API.

This patchset adds a test which fails with the old code.

Additionally some of the API docs are corrected so that rxtx_factor is
listed as a float in all examples.

Fixes LP Bug #1081287.

Change-Id: Iae98522a1f2ed63cbd2497b0b0af5ac2d9bb935c
This commit is contained in:
Dan Prince
2012-11-27 10:28:01 -05:00
parent c4b6f35af2
commit 1cdc56ebec
2 changed files with 17 additions and 4 deletions

View File

@@ -808,7 +808,7 @@ class InstanceTypeCommands(object):
@args('--is_public', dest="is_public", metavar='<is_public>',
help='Make flavor accessible to the public')
def create(self, name, memory, vcpus, root_gb, ephemeral_gb=0,
flavorid=None, swap=0, rxtx_factor=1, is_public=True):
flavorid=None, swap=0, rxtx_factor=1.0, is_public=True):
"""Creates instance types / flavors"""
try:
instance_types.create(name, memory, vcpus, root_gb,

View File

@@ -71,7 +71,7 @@ class InstanceTypeTestCase(test.TestCase):
self.assertEqual(inst_type['root_gb'], 120)
self.assertEqual(inst_type['ephemeral_gb'], 0)
self.assertEqual(inst_type['swap'], 0)
self.assertEqual(inst_type['rxtx_factor'], 1)
self.assertEqual(inst_type['rxtx_factor'], 1.0)
# make sure new type shows up in list
new_list = instance_types.get_all_types()
@@ -95,7 +95,7 @@ class InstanceTypeTestCase(test.TestCase):
self.assertEqual(inst_type['root_gb'], 120)
self.assertEqual(inst_type['ephemeral_gb'], 100)
self.assertEqual(inst_type['swap'], 0)
self.assertEqual(inst_type['rxtx_factor'], 1)
self.assertEqual(inst_type['rxtx_factor'], 1.0)
# make sure new type shows up in list
new_list = instance_types.get_all_types()
@@ -120,7 +120,20 @@ class InstanceTypeTestCase(test.TestCase):
self.assertEqual(inst_type['root_gb'], 120)
self.assertEqual(inst_type['ephemeral_gb'], 100)
self.assertEqual(inst_type['swap'], 0)
self.assertEqual(inst_type['rxtx_factor'], 1)
self.assertEqual(inst_type['rxtx_factor'], 1.0)
def test_instance_type_create_with_custom_rxtx_factor(self):
name = 'Custom RXTX Factor'
inst_type = instance_types.create(name, 256, 1, 120, 100,
rxtx_factor=9.9)
self.assertNotEqual(inst_type['flavorid'], None)
self.assertEqual(inst_type['name'], name)
self.assertEqual(inst_type['memory_mb'], 256)
self.assertEqual(inst_type['vcpus'], 1)
self.assertEqual(inst_type['root_gb'], 120)
self.assertEqual(inst_type['ephemeral_gb'], 100)
self.assertEqual(inst_type['swap'], 0)
self.assertEqual(inst_type['rxtx_factor'], 9.9)
def test_instance_type_create_with_special_characters(self):
"""Ensure instance types raises InvalidInput for invalid characters"""