Action 'delete' for compute controller.
This commit is contained in:
@@ -26,7 +26,11 @@ class Controller(object):
|
|||||||
self.app = app
|
self.app = app
|
||||||
self.openstack_version = openstack_version
|
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.
|
"""Return a new Request object to interact with OpenStack.
|
||||||
|
|
||||||
This method will create a new request starting with the same WSGI
|
This method will create a new request starting with the same WSGI
|
||||||
@@ -49,6 +53,8 @@ class Controller(object):
|
|||||||
new_req.content_type = content_type
|
new_req.content_type = content_type
|
||||||
if body is not None:
|
if body is not None:
|
||||||
new_req.body = utils.utf8(body)
|
new_req.body = utils.utf8(body)
|
||||||
|
if method is not None:
|
||||||
|
new_req.method = method
|
||||||
return new_req
|
return new_req
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
@@ -63,7 +69,7 @@ class Controller(object):
|
|||||||
:param element: The element to look for in the JSON body
|
:param element: The element to look for in the JSON body
|
||||||
:param default: The default element to be returned if not found.
|
:param default: The default element to be returned if not found.
|
||||||
"""
|
"""
|
||||||
if response.status_int == 200:
|
if response.status_int in [200, 201]:
|
||||||
return response.json_body.get(element, default)
|
return response.json_body.get(element, default)
|
||||||
else:
|
else:
|
||||||
raise exception_from_response(response)
|
raise exception_from_response(response)
|
||||||
|
@@ -71,7 +71,7 @@ class Controller(ooi.api.base.Controller):
|
|||||||
|
|
||||||
return collection.Collection(resources=occi_compute_resources)
|
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
|
tenant_id = req.environ["keystone.token_auth"].user.project_id
|
||||||
|
|
||||||
# get info from server
|
# get info from server
|
||||||
@@ -106,3 +106,27 @@ class Controller(ooi.api.base.Controller):
|
|||||||
state=helpers.occi_state(s["status"]),
|
state=helpers.occi_state(s["status"]),
|
||||||
mixins=[os_tpl, res_tpl])
|
mixins=[os_tpl, res_tpl])
|
||||||
return [comp]
|
return [comp]
|
||||||
|
|
||||||
|
def delete(self, req, id=None):
|
||||||
|
tenant_id = req.environ["keystone.token_auth"].user.project_id
|
||||||
|
|
||||||
|
servers = []
|
||||||
|
if id:
|
||||||
|
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,7 +123,8 @@ 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"])
|
controller=self.resources["compute"],
|
||||||
|
collection={"delete": "DELETE"})
|
||||||
|
|
||||||
@webob.dec.wsgify(RequestClass=Request)
|
@webob.dec.wsgify(RequestClass=Request)
|
||||||
def __call__(self, req):
|
def __call__(self, req):
|
||||||
|
Reference in New Issue
Block a user