summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWilliam Wolf <throughnothing@gmail.com>2011-07-27 16:34:02 -0400
committerWilliam Wolf <throughnothing@gmail.com>2011-07-27 16:34:02 -0400
commitf2d8e91b83ff3a3bd1e2f3c53c25a418a578cd27 (patch)
treef79fe6b340effb9e8f2857fc83cf328f8c308390
parent2ac60cd773bb25e19b50c082e0860b1c495d1527 (diff)
moved rest of build logic into builder
-rw-r--r--nova/api/openstack/versions.py42
-rw-r--r--nova/api/openstack/views/versions.py46
-rw-r--r--nova/tests/api/openstack/test_versions.py31
3 files changed, 54 insertions, 65 deletions
diff --git a/nova/api/openstack/versions.py b/nova/api/openstack/versions.py
index 32ee64339..fd0ee46b7 100644
--- a/nova/api/openstack/versions.py
+++ b/nova/api/openstack/versions.py
@@ -135,49 +135,13 @@ class Versions(wsgi.Resource):
def dispatch(self, request, *args):
"""Respond to a request for all OpenStack API versions."""
+ builder = nova.api.openstack.views.versions.get_view_builder(request)
if request.path == '/':
# List Versions
- return self._versions_list(request)
+ return builder.build(VERSIONS)
else:
# Versions Multiple Choice
- return self._versions_multi_choice(request)
-
- def _versions_list(self, request):
- version_objs = []
- for version in VERSIONS:
- version = VERSIONS[version]['version']
- version_objs.append({
- "id": version['id'],
- "status": version['status'],
- "updated": version['updated'],
- })
-
- builder = nova.api.openstack.views.versions.get_view_builder(request)
- versions = [builder.build(version) for version in version_objs]
- return dict(versions=versions)
-
- def _versions_multi_choice(self, request):
- #TODO
- version_objs = []
- for version in VERSIONS:
- version = VERSIONS[version]['version']
- version_objs.append({
- "id": version['id'],
- "status": version['status'],
- "links": [
- {
- "rel": "self"
- }
- ],
- "media-types": version['media-types']
- })
-
- builder = nova.api.openstack.views.versions.get_view_builder(request)
- choices = [
- builder.build_choices(version, request)
- for version in version_objs]
-
- return dict(choices=choices)
+ return builder.build_choices(VERSIONS, request)
class VersionV10(object):
diff --git a/nova/api/openstack/views/versions.py b/nova/api/openstack/views/versions.py
index 97e35c983..87ec251e6 100644
--- a/nova/api/openstack/views/versions.py
+++ b/nova/api/openstack/views/versions.py
@@ -31,21 +31,37 @@ class ViewBuilder(object):
"""
self.base_url = base_url
- def build_choices(self, version_data, request):
- version_data['links'][0]['href'] = self._build_versioned_link(request,
- version_data['id'])
- return version_data
-
- def build(self, version_data):
- """Generic method used to generate a version entity."""
- version = {
- "id": version_data["id"],
- "status": version_data["status"],
- "updated": version_data["updated"],
- "links": self._build_links(version_data),
- }
-
- return version
+ def build_choices(self, VERSIONS, request):
+ version_objs = []
+ for version in VERSIONS:
+ version = VERSIONS[version]['version']
+ version_objs.append({
+ "id": version['id'],
+ "status": version['status'],
+ "links": [
+ {
+ "rel": "self",
+ "href": self._build_versioned_link(request,
+ version['id'])
+ }
+ ],
+ "media-types": version['media-types']
+ })
+
+ return dict(choices=version_objs)
+
+ def build(self, VERSIONS):
+ version_objs = []
+ for version in VERSIONS:
+ version = VERSIONS[version]['version']
+ version_objs.append({
+ "id": version['id'],
+ "status": version['status'],
+ "updated": version['updated'],
+ "links": self._build_links(version),
+ })
+
+ return dict(versions=version_objs)
def _build_versioned_link(self, req, version):
return '%s://%s/%s%s' % (req.scheme, req.host, version, req.path)
diff --git a/nova/tests/api/openstack/test_versions.py b/nova/tests/api/openstack/test_versions.py
index f059b140d..6e4042b3f 100644
--- a/nova/tests/api/openstack/test_versions.py
+++ b/nova/tests/api/openstack/test_versions.py
@@ -529,20 +529,29 @@ class VersionsTest(test.TestCase):
base_url = "http://example.org/"
version_data = {
- "id": "3.2.1",
- "status": "CURRENT",
- "updated": "2011-07-18T11:30:00Z"}
+ "v3.2.1": {
+ "version": {
+ "id": "3.2.1",
+ "status": "CURRENT",
+ "updated": "2011-07-18T11:30:00Z",
+ }
+ }
+ }
expected = {
- "id": "3.2.1",
- "status": "CURRENT",
- "updated": "2011-07-18T11:30:00Z",
- "links": [
+ "versions": [
{
- "rel": "self",
- "href": "http://example.org/3.2.1/",
- },
- ],
+ "id": "3.2.1",
+ "status": "CURRENT",
+ "updated": "2011-07-18T11:30:00Z",
+ "links": [
+ {
+ "rel": "self",
+ "href": "http://example.org/3.2.1/",
+ },
+ ],
+ }
+ ]
}
builder = views.versions.ViewBuilder(base_url)