summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorWilliam Wolf <throughnothing@gmail.com>2011-09-15 10:21:33 -0400
committerWilliam Wolf <throughnothing@gmail.com>2011-09-15 10:21:33 -0400
commit41e8bbd9fd9daa669e0becd762c3c0e4639287ea (patch)
tree51f93f60671506b1ee60871520f95368ac480353 /nova/api
parentbfa8075f659f6fe18eb2442f2ae0722d0fd1c2ff (diff)
downloadnova-41e8bbd9fd9daa669e0becd762c3c0e4639287ea.tar.gz
nova-41e8bbd9fd9daa669e0becd762c3c0e4639287ea.tar.xz
nova-41e8bbd9fd9daa669e0becd762c3c0e4639287ea.zip
added servers_links in v1.1 with tests
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/openstack/servers.py2
-rw-r--r--nova/api/openstack/views/servers.py19
2 files changed, 19 insertions, 2 deletions
diff --git a/nova/api/openstack/servers.py b/nova/api/openstack/servers.py
index 02bce1b50..30933ca34 100644
--- a/nova/api/openstack/servers.py
+++ b/nova/api/openstack/servers.py
@@ -699,7 +699,7 @@ class ControllerV11(Controller):
builder = nova.api.openstack.views.servers.ViewBuilderV11(
addresses_builder, flavor_builder, image_builder,
base_url, project_id)
- return builder.build_list(instances, is_detail=is_detail)
+ return builder.build_list(instances, is_detail=is_detail, **params)
def _action_change_password(self, input_dict, req, id):
context = req.environ['nova.context']
diff --git a/nova/api/openstack/views/servers.py b/nova/api/openstack/views/servers.py
index 1228c81f7..52e0850fb 100644
--- a/nova/api/openstack/views/servers.py
+++ b/nova/api/openstack/views/servers.py
@@ -217,13 +217,30 @@ class ViewBuilderV11(ViewBuilder):
def build_list(self, server_objs, is_detail=False, **kwargs):
limit = kwargs.get('limit', None)
+ print "BUILD LIST 11", limit
servers = []
servers_links = []
for server_obj in server_objs:
servers.append(self.build(server_obj, is_detail)['server'])
- return dict(servers=servers)
+ if (len(servers) and limit) and (limit == len(servers)):
+ print "LIMIT SET"
+ next_link = self.generate_next_link(servers[-1]['id'],
+ limit, is_detail)
+ servers_links = [dict(rel='next', href=next_link)]
+
+ reval = dict(servers=servers)
+ if len(servers_links) > 0:
+ reval['servers_links'] = servers_links
+
+ return reval
+
+ def generate_next_link(self, server_id, limit, is_detail=False):
+ """ Return an href string with proper limit and marker params"""
+ return "%s?limit=%s&marker=%s" % (
+ os.path.join(self.base_url, self.project_id, "servers"),
+ limit, server_id)
def generate_href(self, server_id):
"""Create an url that refers to a specific server id."""