diff options
author | Xavier Queralt <xqueralt@redhat.com> | 2013-06-12 14:59:29 +0200 |
---|---|---|
committer | Xavier Queralt <xqueralt@redhat.com> | 2013-06-17 11:45:30 +0200 |
commit | 645c2d3a06bbf8b0854ebcc539ad33dd706866c5 (patch) | |
tree | 298705a7eb9d62fd2ca8e927daf9303025251fab /nova | |
parent | d147af21db2db77f578e527883cf2c68abc56496 (diff) | |
download | nova-645c2d3a06bbf8b0854ebcc539ad33dd706866c5.tar.gz nova-645c2d3a06bbf8b0854ebcc539ad33dd706866c5.tar.xz nova-645c2d3a06bbf8b0854ebcc539ad33dd706866c5.zip |
Accept is_public=None when listing all flavors
nova-client uses a None (with capital N) when listing all the flavors.
Right now this is interpreted as a wrong query by n-api preventing us
from listing the private flavors using the nova-client.
Fixes bug #1190239
Change-Id: I2a9b1c24cd744c8819c1d41e0ad103d05398401c
Diffstat (limited to 'nova')
-rw-r--r-- | nova/api/openstack/compute/flavors.py | 3 | ||||
-rw-r--r-- | nova/tests/api/openstack/compute/test_flavors.py | 1 | ||||
-rw-r--r-- | nova/utils.py | 10 |
3 files changed, 13 insertions, 1 deletions
diff --git a/nova/api/openstack/compute/flavors.py b/nova/api/openstack/compute/flavors.py index 4da130e9b..c6303646a 100644 --- a/nova/api/openstack/compute/flavors.py +++ b/nova/api/openstack/compute/flavors.py @@ -24,6 +24,7 @@ from nova.api.openstack import xmlutil from nova.compute import flavors from nova import exception from nova.openstack.common import strutils +from nova import utils def make_flavor(elem, detailed=False): @@ -98,7 +99,7 @@ class Controller(wsgi.Controller): if is_public is None: # preserve default value of showing only public flavors return True - elif is_public == 'none': + elif utils.is_none_string(is_public): return None else: try: diff --git a/nova/tests/api/openstack/compute/test_flavors.py b/nova/tests/api/openstack/compute/test_flavors.py index 77e637044..3741fcd33 100644 --- a/nova/tests/api/openstack/compute/test_flavors.py +++ b/nova/tests/api/openstack/compute/test_flavors.py @@ -792,6 +792,7 @@ class ParseIsPublicTest(test.TestCase): def test_string_none(self): self.assertPublic(None, 'none') + self.assertPublic(None, 'None') def test_other(self): self.assertRaises( diff --git a/nova/utils.py b/nova/utils.py index fe360cac6..7fa19aea6 100644 --- a/nova/utils.py +++ b/nova/utils.py @@ -1078,3 +1078,13 @@ def spawn_n(func, *args, **kwargs): interfering with the service spawns. """ eventlet.spawn_n(func, *args, **kwargs) + + +def is_none_string(val): + """ + Check if a string represents a None value. + """ + if not isinstance(val, basestring): + return False + + return val.lower() == 'none' |