From: Angus Salkeld Date: Mon, 2 Apr 2012 05:48:00 +0000 (+1000) Subject: Make the "heat delete" command work. X-Git-Tag: 2014.1~2105 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=1f861a50cdad5096886fe89102e5323072513b00;p=openstack-build%2Fheat-build.git Make the "heat delete" command work. Signed-off-by: Angus Salkeld --- diff --git a/heat/engine/api/v1/stacks.py b/heat/engine/api/v1/stacks.py index e8ae6ddb..bceaa79c 100644 --- a/heat/engine/api/v1/stacks.py +++ b/heat/engine/api/v1/stacks.py @@ -119,6 +119,7 @@ class StacksController(object): return webob.exc.HTTPNotFound('No stack by that name') logger.info('deleting stack %s' % id) + stack_db[id].stop() del stack_db[id] return None diff --git a/heat/engine/parser.py b/heat/engine/parser.py index 6783d3ce..38285e01 100644 --- a/heat/engine/parser.py +++ b/heat/engine/parser.py @@ -103,6 +103,10 @@ class Stack: #print 'calling start [stack->%s]' % (self.resources[r].name) self.resources[r].start() + def stop(self): + for r in self.t['Resources']: + self.resources[r].stop() + def calulate_dependencies(self, s, r): if isinstance(s, dict): for i in s: diff --git a/heat/engine/resources.py b/heat/engine/resources.py index 10ed0883..630992e0 100644 --- a/heat/engine/resources.py +++ b/heat/engine/resources.py @@ -316,6 +316,29 @@ class Instance(Resource): else: self.state_set(self.CREATE_FAILED) + def stop(self): + + if self.state == self.DELETE_IN_PROGRESS or self.state == self.DELETE_COMPLETE: + return + self.state_set(self.DELETE_IN_PROGRESS) + Resource.stop(self) + + if self.instance_id == None: + self.state_set(self.DELETE_COMPLETE) + return + + username = self.stack.creds['username'] + password = self.stack.creds['password'] + tenant = self.stack.creds['tenant'] + auth_url = self.stack.creds['auth_url'] + + nova_client = client.Client(username, password, tenant, auth_url, service_type='compute', service_name='nova') + server = nova_client.servers.get(self.instance_id) + server.delete() + self.instance_id = None + self.state_set(self.DELETE_COMPLETE) + + def insert_package_and_services(self, r, new_script): try: