Handle trailing slash for delete all operation.
This commit is contained in:
parent
cdf535a644
commit
bfbe5c08ec
@ -34,6 +34,27 @@ class Controller(ooi.api.base.Controller):
|
|||||||
|
|
||||||
return occi_compute_resources
|
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):
|
def index(self, req):
|
||||||
tenant_id = req.environ["keystone.token_auth"].user.project_id
|
tenant_id = req.environ["keystone.token_auth"].user.project_id
|
||||||
req = self._get_req(req, path="/%s/servers" % tenant_id)
|
req = self._get_req(req, path="/%s/servers" % tenant_id)
|
||||||
@ -107,26 +128,8 @@ class Controller(ooi.api.base.Controller):
|
|||||||
mixins=[os_tpl, res_tpl])
|
mixins=[os_tpl, res_tpl])
|
||||||
return [comp]
|
return [comp]
|
||||||
|
|
||||||
def delete(self, req, id=None):
|
def delete(self, req, id):
|
||||||
tenant_id = req.environ["keystone.token_auth"].user.project_id
|
return self._delete(req, [id])
|
||||||
|
|
||||||
servers = []
|
def delete_all(self, req):
|
||||||
if id:
|
return self._delete(req, self._get_compute_ids(req))
|
||||||
servers.append(id)
|
|
||||||
else:
|
|
||||||
req = self._get_req(req,
|
|
||||||
path="/%s/servers" % tenant_id,
|
|
||||||
method="GET")
|
|
||||||
response = req.get_response(self.app)
|
|
||||||
for s in self.get_from_response(response, "servers", []):
|
|
||||||
servers.append(s["id"])
|
|
||||||
|
|
||||||
for server_id in servers:
|
|
||||||
req = self._get_req(req,
|
|
||||||
path="/%s/servers/%s" % (tenant_id,
|
|
||||||
server_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 []
|
|
||||||
|
@ -123,8 +123,11 @@ class OCCIMiddleware(object):
|
|||||||
self.resources["compute"] = self._create_resource(
|
self.resources["compute"] = self._create_resource(
|
||||||
ooi.api.compute.Controller)
|
ooi.api.compute.Controller)
|
||||||
self.mapper.resource("server", "compute",
|
self.mapper.resource("server", "compute",
|
||||||
|
controller=self.resources["compute"])
|
||||||
|
self.mapper.connect("compute", "/compute/",
|
||||||
controller=self.resources["compute"],
|
controller=self.resources["compute"],
|
||||||
collection={"delete": "DELETE"})
|
action="delete_all",
|
||||||
|
conditions=dict(method=["DELETE"]))
|
||||||
|
|
||||||
@webob.dec.wsgify(RequestClass=Request)
|
@webob.dec.wsgify(RequestClass=Request)
|
||||||
def __call__(self, req):
|
def __call__(self, req):
|
||||||
|
Loading…
Reference in New Issue
Block a user