From 94d87df93d82626a8f7d5e60f364fdbd411f6c6c Mon Sep 17 00:00:00 2001 From: Yaguang Tang Date: Mon, 20 May 2013 18:05:30 +0800 Subject: [PATCH] Fix config drive code logical error. Image id has changed to uuid, so bool value can't be a image ID any more, remove unnecessary test code. fix bug #1181991 Change-Id: I420e4cdb848401375b347d43e06343efaa7bf5fc (cherry picked from commit 4f44cd9129f094d88dfddfa5885c453590ac847c) --- nova/compute/api.py | 10 +++------- nova/tests/compute/test_compute.py | 16 ++++------------ 2 files changed, 7 insertions(+), 19 deletions(-) diff --git a/nova/compute/api.py b/nova/compute/api.py index 32a68280db4e..02f2caa6c095 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -479,19 +479,15 @@ class API(base.Base): return instance def _check_config_drive(self, context, config_drive): - bool_like = True try: - strutils.bool_from_string(config_drive, strict=True) + bool_like = strutils.bool_from_string(config_drive, strict=True) except ValueError: bool_like = False if config_drive is None: return None, None - elif bool_like and config_drive not in (0, 1, '0', '1'): - # NOTE(sirp): '0' and '1' could be a bool value or an ID. Since - # there are many other ways to specify bools (e.g. 't', 'f'), it's - # better to treat as an ID. - return None, config_drive + elif bool_like: + return None, bool_like else: cd_image_service, config_drive_id = \ glance.get_remote_image_service(context, config_drive) diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index 38403dd243f1..cf2ca57c6aff 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -8989,21 +8989,13 @@ class CheckConfigDriveTestCase(test.TestCase): self.assertCheck((None, None), None) self.assertFalse(self.called['show']) - def test_value_is_bool_like_string(self): - self.assertCheck((None, 'True'), 'True') - self.assertCheck((None, 'yes'), 'yes') - def test_bool_string_or_id(self): - # NOTE(sirp): '0' and '1' could be a bool value or an ID. Since there - # are many other ways to specify bools (e.g. 't', 'f'), it's better to - # treat as an ID. - self.assertCheck((0, None), 0) - self.assertCheck((1, None), 1) - self.assertCheck(('0', None), '0') - self.assertCheck(('1', None), '1') + self.assertCheck((None, True), "true") + self.assertCheck((None, True), 1) + self.assertCheck((None, True), 't') def test_value_is_image_id(self): - self.assertCheck((2, None), 2) + self.assertCheck(("fake-uuid", None), "fake-uuid") class CheckRequestedImageTestCase(test.TestCase):