fix issue of recurse_zones not being converted to bool properly

add bool_from_str util call
add test for bool_from_str
slight rework of min/max_count check
This commit is contained in:
Chris Behrens
2011-06-29 15:22:56 -07:00
parent 097e25f69a
commit 7555aca28a
4 changed files with 27 additions and 10 deletions

View File

@@ -119,14 +119,8 @@ class CreateInstanceHelper(object):
# min_count and max_count are optional. If they exist, they come
# in as strings. We want to default 'min_count' to 1, and default
# 'max_count' to be 'min_count'.
if not min_count:
min_count = 1
else:
min_count = int(min_count)
if not max_count:
max_count = min_count
else:
max_count = int(max_count)
min_count = int(min_count) if min_count else 1
max_count = int(max_count) if max_count else min_count
if min_count > max_count:
min_count = max_count

View File

@@ -80,8 +80,7 @@ class Controller(object):
reservation_id = query_str.get('reservation_id')
project_id = query_str.get('project_id')
fixed_ip = query_str.get('fixed_ip')
recurse_zones = query_str.get('recurse_zones')
recurse_zones = recurse_zones and True or False
recurse_zones = utils.bool_from_str(query_str.get('recurse_zones'))
instance_list = self.compute_api.get_all(
req.environ['nova.context'],
reservation_id=reservation_id,

View File

@@ -276,6 +276,19 @@ class GenericUtilsTestCase(test.TestCase):
result = utils.parse_server_string('www.exa:mple.com:8443')
self.assertEqual(('', ''), result)
def test_bool_from_str(self):
self.assertTrue(utils.bool_from_str('1'))
self.assertTrue(utils.bool_from_str('2'))
self.assertTrue(utils.bool_from_str('-1'))
self.assertTrue(utils.bool_from_str('true'))
self.assertTrue(utils.bool_from_str('True'))
self.assertTrue(utils.bool_from_str('tRuE'))
self.assertFalse(utils.bool_from_str('False'))
self.assertFalse(utils.bool_from_str('false'))
self.assertFalse(utils.bool_from_str('0'))
self.assertFalse(utils.bool_from_str(None))
self.assertFalse(utils.bool_from_str('junk'))
class IsUUIDLikeTestCase(test.TestCase):
def assertUUIDLike(self, val, expected):

View File

@@ -772,6 +772,17 @@ def is_uuid_like(val):
return (len(val) == 36) and (val.count('-') == 4)
def bool_from_str(val):
"""Convert a string representation of a bool into a bool value"""
if not val:
return False
try:
return True if int(val) else False
except ValueError:
return val.lower() == 'true'
class Bootstrapper(object):
"""Provides environment bootstrapping capabilities for entry points."""