summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorBrian Waldon <brian.waldon@rackspace.com>2011-03-15 13:23:42 -0400
committerBrian Waldon <brian.waldon@rackspace.com>2011-03-15 13:23:42 -0400
commite161b00349a7478ac9f51f087c9f16cd345bc2d2 (patch)
tree84eb99ab04b9231ef6d238a0edb8052e28b1a96f /nova
parent354f5e61c4bfb32ad8c2bc3389678f19db5fdb56 (diff)
downloadnova-e161b00349a7478ac9f51f087c9f16cd345bc2d2.tar.gz
nova-e161b00349a7478ac9f51f087c9f16cd345bc2d2.tar.xz
nova-e161b00349a7478ac9f51f087c9f16cd345bc2d2.zip
adding missing view modules; modifying a couple of servers tests to use enumerate
Diffstat (limited to 'nova')
-rw-r--r--nova/api/openstack/views/addresses.py38
-rw-r--r--nova/api/openstack/views/flavors.py39
-rw-r--r--nova/api/openstack/views/images.py39
-rw-r--r--nova/tests/api/openstack/test_servers.py8
4 files changed, 118 insertions, 6 deletions
diff --git a/nova/api/openstack/views/addresses.py b/nova/api/openstack/views/addresses.py
new file mode 100644
index 000000000..d764e5229
--- /dev/null
+++ b/nova/api/openstack/views/addresses.py
@@ -0,0 +1,38 @@
+import hashlib
+from nova.compute import power_state
+from nova import utils
+
+
+def get_view_builder(req):
+ '''
+ A factory method that returns the correct builder based on the version of
+ the api requested.
+ '''
+ version = req.environ['nova.context'].version
+ if version == '1.1':
+ return ViewBuilder_1_1()
+ else:
+ return ViewBuilder_1_0()
+
+
+class ViewBuilder(object):
+ ''' Models a server addresses response as a python dictionary.'''
+
+ def build(self, inst):
+ raise NotImplementedError()
+
+
+class ViewBuilder_1_0(ViewBuilder):
+ def build(self, inst):
+ private_ips = utils.get_from_path(inst, 'fixed_ip/address')
+ public_ips = utils.get_from_path(inst, 'fixed_ip/floating_ips/address')
+ return dict(public=public_ips, private=private_ips)
+
+
+class ViewBuilder_1_1(ViewBuilder):
+ def build(self, inst):
+ private_ips = utils.get_from_path(inst, 'fixed_ip/address')
+ private_ips = [dict(version=4, addr=a) for a in private_ips]
+ public_ips = utils.get_from_path(inst, 'fixed_ip/floating_ips/address')
+ public_ips = [dict(version=4, addr=a) for a in public_ips]
+ return dict(public=public_ips, private=private_ips)
diff --git a/nova/api/openstack/views/flavors.py b/nova/api/openstack/views/flavors.py
new file mode 100644
index 000000000..c6b6c10bb
--- /dev/null
+++ b/nova/api/openstack/views/flavors.py
@@ -0,0 +1,39 @@
+
+
+def get_view_builder(req):
+ '''
+ A factory method that returns the correct builder based on the version of
+ the api requested.
+ '''
+ version = req.environ['nova.context'].version
+ base_url = req.application_url
+ if version == '1.1':
+ return ViewBuilder_1_1(base_url)
+ else:
+ return ViewBuilder_1_0()
+
+
+class ViewBuilder(object):
+ def __init__(self):
+ pass
+
+ def build(self, flavor_obj):
+ raise NotImplementedError()
+
+ def _decorate_response(self, response, flavor_obj):
+ return response
+
+
+class ViewBuilder_1_1(ViewBuilder):
+ def __init__(self, base_url):
+ self.base_url = base_url
+
+ def _decorate_response(self, response, flavor_obj):
+ raise NotImplementedError()
+
+ def generate_href(self, flavor_id):
+ return "{0}/flavors/{1}".format(self.base_url, flavor_id)
+
+
+class ViewBuilder_1_0(ViewBuilder):
+ pass
diff --git a/nova/api/openstack/views/images.py b/nova/api/openstack/views/images.py
new file mode 100644
index 000000000..c80713250
--- /dev/null
+++ b/nova/api/openstack/views/images.py
@@ -0,0 +1,39 @@
+
+
+def get_view_builder(req):
+ '''
+ A factory method that returns the correct builder based on the version of
+ the api requested.
+ '''
+ version = req.environ['nova.context'].version
+ base_url = req.application_url
+ if version == '1.1':
+ return ViewBuilder_1_1(base_url)
+ else:
+ return ViewBuilder_1_0()
+
+
+class ViewBuilder(object):
+ def __init__(self):
+ pass
+
+ def build(self, image_obj):
+ raise NotImplementedError()
+
+ def _decorate_response(self, response, image_obj):
+ return response
+
+
+class ViewBuilder_1_1(ViewBuilder):
+ def __init__(self, base_url):
+ self.base_url = base_url
+
+ def _decorate_response(self, response, image_obj):
+ raise NotImplementedError()
+
+ def generate_href(self, image_id):
+ return "{0}/images/{1}".format(self.base_url, image_id)
+
+
+class ViewBuilder_1_0(ViewBuilder):
+ pass
diff --git a/nova/tests/api/openstack/test_servers.py b/nova/tests/api/openstack/test_servers.py
index b42cecfbb..ad2fa2497 100644
--- a/nova/tests/api/openstack/test_servers.py
+++ b/nova/tests/api/openstack/test_servers.py
@@ -358,15 +358,13 @@ class ServersTest(test.TestCase):
res = req.get_response(fakes.wsgi_app())
res_dict = json.loads(res.body)
- i = 0
- for s in res_dict['servers']:
+ for i,s in enumerate(res_dict['servers']):
self.assertEqual(s['id'], i)
self.assertEqual(s['hostId'], '')
self.assertEqual(s['name'], 'server%d' % i)
self.assertEqual(s['imageId'], '10')
self.assertEqual(s['flavorId'], '1')
self.assertEqual(s['metadata']['seq'], i)
- i += 1
def test_get_all_server_details_v1_1(self):
class FakeRequestContext(object):
@@ -381,15 +379,13 @@ class ServersTest(test.TestCase):
res = req.get_response(fakes.wsgi_app())
res_dict = json.loads(res.body)
- i = 0
- for s in res_dict['servers']:
+ for i,s in enumerate(res_dict['servers']):
self.assertEqual(s['id'], i)
self.assertEqual(s['hostId'], '')
self.assertEqual(s['name'], 'server%d' % i)
self.assertEqual(s['imageRef'], 'http://localhost/v1.1/images/10')
self.assertEqual(s['flavorRef'], 'http://localhost/v1.1/flavors/1')
self.assertEqual(s['metadata']['seq'], i)
- i += 1
def test_get_all_server_details_with_host(self):
'''