summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCerberus <matt.dietz@rackspace.com>2010-09-21 17:12:53 -0500
committerCerberus <matt.dietz@rackspace.com>2010-09-21 17:12:53 -0500
commitd642716db42b229e879f6f4673f166beb8d55faa (patch)
tree0c28bd2c5a8f5b7d86bbfb3df406b66ecc05b585
parent2b2d9b3190ca19fa77121faf1351c9af7ad78866 (diff)
downloadnova-d642716db42b229e879f6f4673f166beb8d55faa.tar.gz
nova-d642716db42b229e879f6f4673f166beb8d55faa.tar.xz
nova-d642716db42b229e879f6f4673f166beb8d55faa.zip
Added server index and detail differentiation
-rw-r--r--nova/api/rackspace/__init__.py3
-rw-r--r--nova/api/rackspace/servers.py18
2 files changed, 16 insertions, 5 deletions
diff --git a/nova/api/rackspace/__init__.py b/nova/api/rackspace/__init__.py
index ac5365310..5f4020837 100644
--- a/nova/api/rackspace/__init__.py
+++ b/nova/api/rackspace/__init__.py
@@ -140,7 +140,8 @@ class APIRouter(wsgi.Router):
def __init__(self):
mapper = routes.Mapper()
- mapper.resource("server", "servers", controller=servers.Controller())
+ mapper.resource("server", "servers", controller=servers.Controller()
+ collection={'detail': 'GET'})
mapper.resource("image", "images", controller=images.Controller(),
collection={'detail': 'GET'})
mapper.resource("flavor", "flavors", controller=flavors.Controller(),
diff --git a/nova/api/rackspace/servers.py b/nova/api/rackspace/servers.py
index 5f685dbd4..3ba5af8cf 100644
--- a/nova/api/rackspace/servers.py
+++ b/nova/api/rackspace/servers.py
@@ -31,8 +31,9 @@ class Controller(base.Controller):
'application/xml': {
"plurals": "servers",
"attributes": {
- "server": [ "id", "imageId", "flavorId", "hostId", "status",
- "progress", "addresses", "metadata", "progress" ]
+ "server": [ "id", "imageId", "name", "flavorId", "hostId",
+ "status", "progress", "addresses", "metadata",
+ "progress" ]
}
}
}
@@ -41,7 +42,11 @@ class Controller(base.Controller):
self.instdir = compute.InstanceDirectory()
def index(self, req):
- return [_entity_inst(instance_details(inst)) for inst in instdir.all]
+ allowed_keys = [ 'id', 'name']
+ return [_entity_inst(inst, allowed_keys) for inst in instdir.all]
+
+ def detail(self, req):
+ return [_entity_inst(inst) for inst in instdir.all]
def show(self, req, id):
inst = self.instdir.get(id)
@@ -103,7 +108,7 @@ class Controller(base.Controller):
inst.save()
return _entity_inst(inst)
- def _entity_inst(self, inst):
+ def _entity_inst(self, inst, allowed_keys=None):
""" Maps everything to Rackspace-like attributes for return"""
translated_keys = dict(metadata={}, status=state_description,
@@ -119,4 +124,9 @@ class Controller(base.Controller):
for key in filtered_keys::
del inst[key]
+ if allowed_keys:
+ for key in inst.keys():
+ if key not in allowed_keys:
+ del inst[key]
+
return dict(server=inst)