def remove_cluster_resp(cls, **kwargs): network_manager = NetworkManager() logger.info( "RPC method remove_cluster_resp received: %s" % json.dumps(kwargs) ) task_uuid = kwargs.get('task_uuid') cls.remove_nodes_resp(**kwargs) task = db().query(Task).filter_by(uuid=task_uuid).first() cluster = task.cluster if task.status in ('ready',): logger.debug("Removing environment itself") cluster_name = cluster.name nws = itertools.chain( *[n.networks for n in cluster.network_groups] ) ips = db().query(IPAddr).filter( IPAddr.network.in_([n.id for n in nws]) ) map(db().delete, ips) db().commit() db().delete(cluster) db().commit() # Dmitry's hack for clearing VLANs without networks network_manager.clear_vlans() notifier.notify( "done", u"Environment '%s' and all its nodes are deleted" % ( cluster_name ) ) elif task.status in ('error',): cluster.status = 'error' db().add(cluster) db().commit() if not task.message: task.message = "Failed to delete nodes:\n{0}".format( cls._generate_error_message( task, error_types=('deletion',) ) ) notifier.notify( "error", task.message, cluster.id )
def remove_cluster_resp(cls, **kwargs): network_manager = NetworkManager() logger.info("RPC method remove_cluster_resp received: %s" % json.dumps(kwargs)) task_uuid = kwargs.get('task_uuid') cls.remove_nodes_resp(**kwargs) task = db().query(Task).filter_by(uuid=task_uuid).first() cluster = task.cluster if task.status in ('ready', ): logger.debug("Removing environment itself") cluster_name = cluster.name nws = itertools.chain( *[n.networks for n in cluster.network_groups]) ips = db().query(IPAddr).filter( IPAddr.network.in_([n.id for n in nws])) map(db().delete, ips) db().commit() db().delete(cluster) db().commit() # Dmitry's hack for clearing VLANs without networks network_manager.clear_vlans() notifier.notify( "done", u"Environment '%s' and all its nodes are deleted" % (cluster_name)) elif task.status in ('error', ): cluster.status = 'error' db().add(cluster) db().commit() if not task.message: task.message = "Failed to delete nodes:\n{0}".format( cls._generate_error_message(task, error_types=('deletion', ))) notifier.notify("error", task.message, cluster.id)