summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian Waldon <brian.waldon@rackspace.com>2011-08-11 15:30:43 -0400
committerBrian Waldon <brian.waldon@rackspace.com>2011-08-11 15:30:43 -0400
commit45d6ab8ffec6ff4b26500df7049ce4092b15f00c (patch)
tree6ae8616667cb9f3fa38dbed9af7ec64c9016b651
parentfe0bde67193ce76376e72a7263b89240a63722a8 (diff)
fixing id parsing
-rw-r--r--nova/api/openstack/common.py9
-rw-r--r--nova/tests/api/openstack/test_common.py4
-rw-r--r--nova/tests/api/openstack/test_servers.py16
3 files changed, 26 insertions, 3 deletions
diff --git a/nova/api/openstack/common.py b/nova/api/openstack/common.py
index dfdd62201..23614d598 100644
--- a/nova/api/openstack/common.py
+++ b/nova/api/openstack/common.py
@@ -169,10 +169,13 @@ def get_id_from_href(href):
Returns: 123
"""
- if re.match(r'\d+$', str(href)):
- return int(href)
try:
- return int(urlparse.urlsplit(href).path.split('/')[-1])
+ href = str(href)
+
+ if re.match(r'\d+$', href):
+ return int(href)
+ else:
+ return int(urlparse.urlsplit(href).path.split('/')[-1])
except ValueError, e:
LOG.debug(_("Error extracting id from href: %s") % href)
raise ValueError(_('could not parse id from href'))
diff --git a/nova/tests/api/openstack/test_common.py b/nova/tests/api/openstack/test_common.py
index 5a6e43579..b422bc4d1 100644
--- a/nova/tests/api/openstack/test_common.py
+++ b/nova/tests/api/openstack/test_common.py
@@ -249,6 +249,10 @@ class MiscFunctionsTest(test.TestCase):
common.get_id_from_href,
fixture)
+ def test_get_id_from_href_int(self):
+ fixture = 1
+ self.assertEqual(fixture, common.get_id_from_href(fixture))
+
def test_get_version_from_href(self):
fixture = 'http://www.testsite.com/v1.1/images'
expected = '1.1'
diff --git a/nova/tests/api/openstack/test_servers.py b/nova/tests/api/openstack/test_servers.py
index b6342ae2f..290f6e990 100644
--- a/nova/tests/api/openstack/test_servers.py
+++ b/nova/tests/api/openstack/test_servers.py
@@ -1653,6 +1653,22 @@ class ServersTest(test.TestCase):
res = req.get_response(fakes.wsgi_app())
self.assertEqual(res.status_int, 400)
+ def test_create_instance_v1_1_invalid_flavor_id_int(self):
+ self._setup_for_create_instance()
+
+ image_href = 'http://localhost/v1.1/images/2'
+ flavor_ref = -1
+ body = dict(server=dict(
+ name='server_test', imageRef=image_href, flavorRef=flavor_ref,
+ metadata={'hello': 'world', 'open': 'stack'},
+ personality={}))
+ req = webob.Request.blank('/v1.1/servers')
+ req.method = 'POST'
+ req.body = json.dumps(body)
+ req.headers["content-type"] = "application/json"
+ res = req.get_response(fakes.wsgi_app())
+ self.assertEqual(res.status_int, 400)
+
def test_create_instance_v1_1_bad_flavor_href(self):
self._setup_for_create_instance()