diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-01-24 07:11:26 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-01-24 07:11:26 +0000 |
| commit | 7d9d2ec38747e6683ec97cd7c1af2e98eb82ea56 (patch) | |
| tree | c181dbd149fdd8b7e912b0afed635207c46823b5 /nova/api | |
| parent | b8f78573138ef74ebff0d28f480f5f84e3d7a7d3 (diff) | |
| parent | 48f4e140ec929d8abec6145088df9db758ecda9a (diff) | |
| download | nova-7d9d2ec38747e6683ec97cd7c1af2e98eb82ea56.tar.gz nova-7d9d2ec38747e6683ec97cd7c1af2e98eb82ea56.tar.xz nova-7d9d2ec38747e6683ec97cd7c1af2e98eb82ea56.zip | |
Merge "Fixed limiting for flavors"
Diffstat (limited to 'nova/api')
| -rw-r--r-- | nova/api/openstack/common.py | 7 | ||||
| -rw-r--r-- | nova/api/openstack/compute/flavors.py | 7 | ||||
| -rw-r--r-- | nova/api/openstack/compute/views/flavors.py | 23 |
3 files changed, 24 insertions, 13 deletions
diff --git a/nova/api/openstack/common.py b/nova/api/openstack/common.py index 15f5be737..f3aa3a564 100644 --- a/nova/api/openstack/common.py +++ b/nova/api/openstack/common.py @@ -504,13 +504,16 @@ class ViewBuilder(object): self._collection_name, str(identifier)) - def _get_collection_links(self, request, items): + def _get_collection_links(self, request, items, id_key="uuid"): """Retrieve 'next' link, if applicable.""" links = [] limit = int(request.params.get("limit", 0)) if limit and limit == len(items): last_item = items[-1] - last_item_id = last_item.get("uuid", last_item["id"]) + if id_key in last_item: + last_item_id = last_item[id_key] + else: + last_item_id = last_item["id"] links.append({ "rel": "next", "href": self._get_next_link(request, last_item_id), diff --git a/nova/api/openstack/compute/flavors.py b/nova/api/openstack/compute/flavors.py index b5212e703..c7ceecbec 100644 --- a/nova/api/openstack/compute/flavors.py +++ b/nova/api/openstack/compute/flavors.py @@ -18,6 +18,7 @@ import webob from nova.api.openstack.compute.views import flavors as flavors_view +from nova.api.openstack import common from nova.api.openstack import wsgi from nova.api.openstack import xmlutil from nova.compute import instance_types @@ -72,13 +73,15 @@ class Controller(wsgi.Controller): def index(self, req): """Return all flavors in brief.""" flavors = self._get_flavors(req) - return self._view_builder.index(req, flavors) + limited_flavors = common.limited_by_marker(flavors.values(), req) + return self._view_builder.index(req, limited_flavors) @wsgi.serializers(xml=FlavorsTemplate) def detail(self, req): """Return all flavors in detail.""" flavors = self._get_flavors(req) - return self._view_builder.detail(req, flavors) + limited_flavors = common.limited_by_marker(flavors.values(), req) + return self._view_builder.detail(req, limited_flavors) @wsgi.serializers(xml=FlavorTemplate) def show(self, req, id): diff --git a/nova/api/openstack/compute/views/flavors.py b/nova/api/openstack/compute/views/flavors.py index 64284e406..050ea20d3 100644 --- a/nova/api/openstack/compute/views/flavors.py +++ b/nova/api/openstack/compute/views/flavors.py @@ -47,16 +47,21 @@ class ViewBuilder(common.ViewBuilder): def index(self, request, flavors): """Return the 'index' view of flavors.""" - def _get_flavors(request, flavors): - for _, flavor in flavors.iteritems(): - yield self.basic(request, flavor)["flavor"] - - return dict(flavors=list(_get_flavors(request, flavors))) + return self._list_view(self.basic, request, flavors) def detail(self, request, flavors): """Return the 'detail' view of flavors.""" - def _get_flavors(request, flavors): - for _, flavor in flavors.iteritems(): - yield self.show(request, flavor)["flavor"] + return self._list_view(self.show, request, flavors) + + def _list_view(self, func, request, flavors): + """Provide a view for a list of flavors.""" + flavor_list = [func(request, flavor)["flavor"] for flavor in flavors] + flavors_links = self._get_collection_links(request, + flavors, + "flavorid") + flavors_dict = dict(flavors=flavor_list) + + if flavors_links: + flavors_dict["flavors_links"] = flavors_links - return dict(flavors=list(_get_flavors(request, flavors))) + return flavors_dict |
