summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorAlex Meade <alex.meade@rackspace.com>2011-07-12 12:01:13 -0400
committerAlex Meade <alex.meade@rackspace.com>2011-07-12 12:01:13 -0400
commit495137fb383766ae5345fd8b30610a93483c0eaf (patch)
tree95bcc1fefd68eab678a947cd4498b0234413e5d8 /nova/api
parenta8c9082c701a65f221f218cd8baa92b3859fc0ab (diff)
Updated remove_version_from_href to be more intelligent
Added tests
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/common.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/nova/api/openstack/common.py b/nova/api/openstack/common.py
index 9aa384f33..83854b13f 100644
--- a/nova/api/openstack/common.py
+++ b/nova/api/openstack/common.py
@@ -136,11 +136,21 @@ def get_id_from_href(href):
raise webob.exc.HTTPBadRequest(_('could not parse id from href'))
-def remove_version_from_href(base_url):
+def remove_version_from_href(href):
"""Removes the api version from the href.
Given: 'http://www.nova.com/v1.1/123'
Returns: 'http://www.nova.com/123'
"""
- return base_url.rsplit('/', 1).pop(0)
+ try:
+ #matches /v#.#
+ new_href = re.sub(r'[/][v][0-9]*.[0-9]*', '', href)
+ if new_href == href:
+ msg = _('href does not contain version')
+ raise webob.exc.HTTPBadRequest(explanation=msg)
+ return new_href
+ except:
+ LOG.debug(_("Error removing version from href: %s") % href)
+ msg = _('could not parse version from href')
+ raise webob.exc.HTTPBadRequest(explanation=msg)