def set_new_assignments(self, paths_assignment_info): logger.info("Set new assignment.") if self.get_current_reassignment() is not None: raise Exception("There is already running assignment.") config_api = ConfigAPI() consul_api = ConsulAPI() logger.info("Delete old assignments.") consul_api.delete_assignments() session = consul_api.get_new_session_ID( config_api.get_assignment_session_name(), configuration().get_node_name(), True) if consul_api.lock_key(config_api.get_consul_assignment_path(), session, "root"): logger.info("Lock assignment root.") for path_assignment_info in paths_assignment_info: path_assignment_info.status = ReassignPathStatus.pending consul_api.set_path_assignment( path_assignment_info, self._get_node_session(path_assignment_info.target_node)) logger.info( "New assignment for {} ,disk {}, from node {} and to node {} with status {}" .format(path_assignment_info.ip, path_assignment_info.disk_id, path_assignment_info.node, path_assignment_info.target_node, path_assignment_info.status)) else: logger.error("Can't lock paths assignment key.") raise Exception("Can't lock paths assignment key.")
def remove_assignment(self): consul_api = ConsulAPI() if consul_api.get_assignments() is not None: consul_api.delete_assignments()