def removeServerFromCluster(clusterName, serverName): code = None reval = None params = [] params.append(clusterName) params.append(serverName) status, clusterid, server_id = get_server(clusterName, serverName) if status == "-1": code, reval = "20052", "No cluster " + clusterName + "." elif status == "-2": code, reval = "20054", "server " + serverName + " is not in cluster " + clusterName elif Utils.isOnline(serverName) == False: code, reval = "22008", "Server " + serverName + " is not online" if code is not None: result = Utils.errorCode(code, reval, params) logger.error(reval) raise web.HTTPError(status="400 Bad Request", data=result) try: servers = Globals.db.select("server_info", what="*", where="cluster_id=$clusterid", vars=locals()) if len(servers) == 0: logger.info("This server[" + serverName + "] not contained in table server_info") return "" if len(servers) == 1: Globals.db.delete("server_info", where="id=$server_id", vars=locals()) logger.info("delete server[" + serverName + "] from table server_info") return "" for server in servers: if (Utils.getIPByName(server.name) != Utils.getIPByName(serverName)) and ( server.name.strip() != serverName ): break if Utils.isLocalHost(serverName): status, ip = Utils.getLocal_IP() else: ip = Utils.getIPByName(serverName) status, msg = Utils.executeOnServer(server.name, "gluster --mode=script peer detach " + ip) if status == -1: code, reval = ( "26104", "error when connecting to remote host " + serverName + " from localhost " + server.name + "." + msg, ) elif status == -2: code, reval = "26059", "Error when using pub key to connect remote server " + serverName + "." + msg elif status == 1: code, reval = "22014", 'Error when executing "gluster --mode=script peer detach ' + ip + '"' + msg if code is not None: result = Utils.errorCode(code, reval, params) web.HTTPError(status="400 Bad Request", data="") logger.error(reval) return result Globals.db.delete("server_info", where="id=$server_id", vars=locals()) return "" except Exception, e: code, reval = "22101", "failed to remove server " + serverName + "." + str(e) logger.error(reval) result = Utils.errorCode(code, reval, params) raise web.HTTPError(status="400 Bad Request", data=result)
def operationCluster(clusterName): try: cluster_id_info = db.select('cluster_info',where='name=$clusterName' ,what="id",vars=locals()) if len(cluster_id_info) == 0: code, reval = "20200", "Error ["+clusterName+"] not existed" else: data = web.input() operation = data.operation status,local_IP = Utils.getLocal_IP() localIP = local_IP.strip() cluster_id = cluster_id_info[0].id server_name_info = db.select('server_info',where='cluster_id=$cluster_id' ,what="name",vars=locals()) if operation == "mount": for server in server_name_info: serverName = server.name commandWithArgs = "sh " + Globals.BACKEND_SCRIPT + "neofs_setup.sh " + serverName status,message = Utils.executeOnServer(serverName,commandWithArgs) if status != 0: code, reval = "21015", "Error when operation[mount] cluster[" + clusterName + "]: mount failure on server[" + serverName + "]" break if status == 0: logger.info("Operation[mount] cluster[" + clusterName + "] successfully!") return '' elif operation == "umount": for server in server_name_info: serverName = server.name commandWithArgs = "sh " + Globals.BACKEND_SCRIPT + "neofs_teardown.sh " + serverName status,message = Utils.executeOnServer(serverName,commandWithArgs) if status != 0: code, reval = "21015", "Error when operation[umount] cluster[" + clusterName + "]: umount failure on server[" + serverName + "]" break if status == 0: logger.info("Operation[umount] cluster[" + clusterName + "] successfully!") return '' elif operation == "remount": for server in server_name_info: serverName = server.name commandWithArgs = "sh " + Globals.BACKEND_SCRIPT + "neofs_teardown.sh " + serverName status,message = Utils.executeOnServer(serverName,commandWithArgs) if status != 0: code, reval = "21015", "Error when operation[remount] cluster[" + clusterName + "]: umount failure on server[" + serverName + "]" break commandWithArgs = "sh " + Globals.BACKEND_SCRIPT + "neofs_setup.sh " + serverName status,message = Utils.executeOnServer(serverName,commandWithArgs) if status != 0: code, reval = "21015", "Error when operation[remount] cluster[" + clusterName + "]: mount failure on server[" + serverName + "]" break if status == 0: logger.info("Operation[remount] cluster[" + clusterName + "] successfully!") return '' else: code, reval = "21014", "Error when operation cluster[" + clusterName + "]: no such operation on cluster" except Exception, e: code, reval = "21015", "Error when operation a cluster:" + str(e)