def delete_blueprint(self, blueprint_id): blueprint_deployments = self.sm.get_blueprint_deployments(blueprint_id) if len(blueprint_deployments) > 0: raise manager_exceptions.DependentExistsError( "Can't delete blueprint {0} - There exist " "deployments for this blueprint; Deployments ids: {1}".format( blueprint_id, ','.join([dep.id for dep in blueprint_deployments]))) return self.sm.delete_blueprint(blueprint_id)
def delete_deployment(self, deployment_id, ignore_live_nodes=False): # Verify deployment exists. self.sm.get_deployment(deployment_id) # validate there are no running executions for this deployment deplyment_id_filter = self.create_filters_dict( deployment_id=deployment_id) executions = self.sm.executions_list( filters=deplyment_id_filter).items if any(execution.status not in models.Execution.END_STATES for execution in executions): raise manager_exceptions.DependentExistsError( "Can't delete deployment {0} - There are running " "executions for this deployment. Running executions ids: {1}" .format( deployment_id, ','.join([execution.id for execution in executions if execution.status not in models.Execution.END_STATES]))) if not ignore_live_nodes: deplyment_id_filter = self.create_filters_dict( deployment_id=deployment_id) node_instances = self.sm.get_node_instances( filters=deplyment_id_filter).items # validate either all nodes for this deployment are still # uninitialized or have been deleted if any(node.state not in ('uninitialized', 'deleted') for node in node_instances): raise manager_exceptions.DependentExistsError( "Can't delete deployment {0} - There are live nodes for " "this deployment. Live nodes ids: {1}" .format(deployment_id, ','.join([node.id for node in node_instances if node.state not in ('uninitialized', 'deleted')]))) self._delete_deployment_environment(deployment_id) self._delete_deployment_logs(deployment_id) return self.sm.delete_deployment(deployment_id)