summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorMichael Gundlach <michael.gundlach@rackspace.com>2010-08-25 17:48:08 -0400
committerMichael Gundlach <michael.gundlach@rackspace.com>2010-08-25 17:48:08 -0400
commitc9d3b7c3ae71bbbe6f3077dcee13be41a14a6733 (patch)
treebdda6af5f27582a4f7a6133694cc2a835466cd23 /nova
parent0aa2eceba81e569dcde8bca318b696d121fe9f81 (diff)
downloadnova-c9d3b7c3ae71bbbe6f3077dcee13be41a14a6733.tar.gz
nova-c9d3b7c3ae71bbbe6f3077dcee13be41a14a6733.tar.xz
nova-c9d3b7c3ae71bbbe6f3077dcee13be41a14a6733.zip
Support GET /<controller>/detail
Diffstat (limited to 'nova')
-rw-r--r--nova/api/rackspace/__init__.py6
-rw-r--r--nova/api/rackspace/flavors.py7
-rw-r--r--nova/api/rackspace/images.py11
-rw-r--r--nova/image/__init__.py0
4 files changed, 18 insertions, 6 deletions
diff --git a/nova/api/rackspace/__init__.py b/nova/api/rackspace/__init__.py
index 27e78f801..b4d666d63 100644
--- a/nova/api/rackspace/__init__.py
+++ b/nova/api/rackspace/__init__.py
@@ -74,8 +74,10 @@ class APIRouter(wsgi.Router):
def __init__(self):
mapper = routes.Mapper()
mapper.resource("server", "servers", controller=servers.Controller())
- mapper.resource("image", "images", controller=images.Controller())
- mapper.resource("flavor", "flavors", controller=flavors.Controller())
+ mapper.resource("image", "images", controller=images.Controller(),
+ collection={'detail': 'GET'})
+ mapper.resource("flavor", "flavors", controller=flavors.Controller(),
+ collection={'detail': 'GET'})
mapper.resource("sharedipgroup", "sharedipgroups",
controller=sharedipgroups.Controller())
super(APIRouter, self).__init__(mapper)
diff --git a/nova/api/rackspace/flavors.py b/nova/api/rackspace/flavors.py
index 59981f1c5..60b35c939 100644
--- a/nova/api/rackspace/flavors.py
+++ b/nova/api/rackspace/flavors.py
@@ -31,7 +31,12 @@ class Controller(base.Controller):
}
def index(self, req):
- """Return all flavors."""
+ """Return all flavors in brief."""
+ return dict(flavors=[dict(id=flavor['id'], name=flavor['name'])
+ for flavor in self.detail(req)['flavors']])
+
+ def detail(self, req):
+ """Return all flavors in detail."""
items = [self.show(req, id)['flavor'] for id in self._all_ids()]
return dict(flavors=items)
diff --git a/nova/api/rackspace/images.py b/nova/api/rackspace/images.py
index 06fb0d38f..2f3e928b9 100644
--- a/nova/api/rackspace/images.py
+++ b/nova/api/rackspace/images.py
@@ -15,7 +15,7 @@
# License for the specific language governing permissions and limitations
# under the License.
-from nova import image
+import nova.image.service
from nova.api.rackspace import base
from nova.api.rackspace import _id_translator
from webob import exc
@@ -32,12 +32,17 @@ class Controller(base.Controller):
}
def __init__(self):
- self._service = image.ImageService.load()
+ self._service = nova.image.service.ImageService.load()
self._id_translator = _id_translator.RackspaceAPIIdTranslator(
"image", self._service.__class__.__name__)
def index(self, req):
- """Return all public images."""
+ """Return all public images in brief."""
+ return dict(images=[dict(id=img['id'], name=img['name'])
+ for img in self.detail(req)['images']])
+
+ def detail(self, req):
+ """Return all public images in detail."""
data = self._service.index()
for img in data:
img['id'] = self._id_translator.to_rs_id(img['id'])
diff --git a/nova/image/__init__.py b/nova/image/__init__.py
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/nova/image/__init__.py