Skip to content

Commit

Permalink
Merge branch 'handle_delete_trailing_slash' into compute_controller
Browse files Browse the repository at this point in the history
Conflicts:
	ooi/api/base.py
  • Loading branch information
alvarolopez committed Apr 10, 2015
2 parents 3f436d4 + bfbe5c0 commit 65edb4b
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 2 deletions.
8 changes: 7 additions & 1 deletion ooi/api/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,11 @@ def __init__(self, app, openstack_version):
self.app = app
self.openstack_version = openstack_version

def _get_req(self, req, path=None, content_type=None, body=None):
def _get_req(self, req,
path=None,
content_type=None,
body=None,
method=None):
"""Return a new Request object to interact with OpenStack.
This method will create a new request starting with the same WSGI
Expand All @@ -49,6 +53,8 @@ def _get_req(self, req, path=None, content_type=None, body=None):
new_req.content_type = content_type
if body is not None:
new_req.body = utils.utf8(body)
if method is not None:
new_req.method = method
return new_req

@staticmethod
Expand Down
29 changes: 28 additions & 1 deletion ooi/api/compute.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,27 @@ def _get_compute_resources(self, servers):

return occi_compute_resources

def _get_compute_ids(self, req):
tenant_id = req.environ["keystone.token_auth"].user.project_id
req = self._get_req(req,
path="/%s/servers" % tenant_id,
method="GET")
response = req.get_response(self.app)
return [s["id"] for s in self.get_from_response(response,
"servers", [])]

def _delete(self, req, ids):
tenant_id = req.environ["keystone.token_auth"].user.project_id
for id in ids:
req = self._get_req(req,
path="/%s/servers/%s" % (tenant_id,
id),
method="DELETE")
response = req.get_response(self.app)
if response.status_int not in [204]:
raise ooi.api.base.exception_from_response(response)
return []

def index(self, req):
tenant_id = req.environ["keystone.token_auth"].user.project_id
req = self._get_req(req, path="/%s/servers" % tenant_id)
Expand Down Expand Up @@ -71,7 +92,7 @@ def create(self, req, headers, params, body):

return collection.Collection(resources=occi_compute_resources)

def show(self, id, req):
def show(self, req, id):
tenant_id = req.environ["keystone.token_auth"].user.project_id

# get info from server
Expand Down Expand Up @@ -106,3 +127,9 @@ def show(self, id, req):
state=helpers.occi_state(s["status"]),
mixins=[os_tpl, res_tpl])
return [comp]

def delete(self, req, id):
return self._delete(req, [id])

def delete_all(self, req):
return self._delete(req, self._get_compute_ids(req))
4 changes: 4 additions & 0 deletions ooi/wsgi/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,10 @@ def index(self, *args, **kwargs):
ooi.api.compute.Controller)
self.mapper.resource("server", "compute",
controller=self.resources["compute"])
self.mapper.connect("compute", "/compute/",
controller=self.resources["compute"],
action="delete_all",
conditions=dict(method=["DELETE"]))

@webob.dec.wsgify(RequestClass=Request)
def __call__(self, req):
Expand Down

0 comments on commit 65edb4b

Please sign in to comment.