From: Scott Baker Date: Mon, 26 Aug 2013 15:25:37 +0000 (-0700) Subject: support calling destroy_instance using admin tenant X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=6a50b025ec196d63f4d876077a107d41f1a1eabc;p=plstackapi.git support calling destroy_instance using admin tenant --- diff --git a/planetstack/openstack/driver.py b/planetstack/openstack/driver.py index 5bb1eb2..0e5fbf0 100644 --- a/planetstack/openstack/driver.py +++ b/planetstack/openstack/driver.py @@ -385,11 +385,18 @@ class OpenStackDriver: availability_zone=availability_zone, nics=nics) return server - + def destroy_instance(self, id): - servers = self.shell.nova.servers.findall(id=id) + if (self.shell.nova.tenant=="admin"): + # findall() is implemented as a list() followed by a python search of the + # list. Since findall() doesn't accept "all_tenants", we do this using + # list() ourselves. This allows us to delete an instance as admin. + servers = self.shell.nova.servers.list(search_opts={"all_tenants": True}) + else: + servers = self.shell.nova.servers.list() for server in servers: - self.shell.nova.servers.delete(server) + if server.id == id: + result=self.shell.nova.servers.delete(server) def update_instance_metadata(self, id, metadata): servers = self.shell.nova.servers.findall(id=id)