diff options
| author | William Wolf <throughnothing@gmail.com> | 2011-09-15 10:21:33 -0400 |
|---|---|---|
| committer | William Wolf <throughnothing@gmail.com> | 2011-09-15 10:21:33 -0400 |
| commit | 41e8bbd9fd9daa669e0becd762c3c0e4639287ea (patch) | |
| tree | 51f93f60671506b1ee60871520f95368ac480353 /nova/api | |
| parent | bfa8075f659f6fe18eb2442f2ae0722d0fd1c2ff (diff) | |
| download | nova-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.py | 2 | ||||
| -rw-r--r-- | nova/api/openstack/views/servers.py | 19 |
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.""" |
