def ping_rasps_in_stack(nstack): print("------------------------------------") print("---- Ping command in process... ----") print("------------------------------------") tmp = 0 for key in global_settings.rasps: if global_settings.rasps[key]._stack == nstack: ip = global_settings.rasps[key]._ip id = global_settings.rasps[key]._id print("ip, id rasp:", ip, id) try: # bash ping command from master to pis sh.ping(ip, "-c 2", _out="/dev/null") global_settings.rasps[id]._Rstatus = "okStatus" print(ip, " is up") date = datetime.datetime.now() date = date.strftime("%d/%m/%Y") rasps_handler.update_rasp_by_id(id, "ping", date, 200) tmp = tmp + 1 except sh.ErrorReturnCode_1: print("no response from", ip) global_settings.rasps[id]._Rstatus = "koStatus" if tmp == 0: global_settings.stacks[nstack]._Sstatus = "koStatus" else: if tmp < int(configRack["rack"]["pi_stack"]): print("Warning") global_settings.stacks[nstack]._Sstatus = "warningStatus" else: global_settings.stacks[nstack]._Sstatus = "okStatus" return
def ping_rasps_in_stack(nstack): print('------------------------------------') print("---- Ping command in process... ----") print('------------------------------------') tmp = 0 for key in global_settings.rasps: if global_settings.rasps[key]._stack == nstack: ip = global_settings.rasps[key]._ip id = global_settings.rasps[key]._id print("ip, id rasp:", ip, id) try: #bash ping command from master to pis sh.ping(ip, "-c 2", _out="/dev/null") global_settings.rasps[id]._Rstatus = "okStatus" print(ip, " is up") date = datetime.datetime.now() date = date.strftime('%d/%m/%Y') rasps_handler.update_rasp_by_id(id, "ping", date, 200) tmp = tmp + 1 except sh.ErrorReturnCode_1: print("no response from", ip) global_settings.rasps[id]._Rstatus = "koStatus" if tmp == 0: global_settings.stacks[nstack]._Sstatus = "koStatus" else: if tmp < int(configRack['rack']['pi_stack']): print("Warning") global_settings.stacks[nstack]._Sstatus = "warningStatus" else: global_settings.stacks[nstack]._Sstatus = "okStatus" return
def post(self): requestAction = self.request.body strRequestAction = requestAction.decode("utf-8") jsonRequestAction = json.loads(strRequestAction) stack_id = int(jsonRequestAction["id"]) if jsonRequestAction["action"] == "ping": print("-----------Pinging stack-----------") id_str = jsonRequestAction["id"] stacks_handler.ping_rasps_in_stack(id_str) elif jsonRequestAction["action"] == "shutdown": stack_power.powerup_stack(stack_id) elif jsonRequestAction["action"] == "reboot": stack_power.powerdown_stack(stack_id) time.sleep(1) stack_power.powerup_stack(stack_id) else: tmp = "rasps:" + jsonRequestAction["action"] MESSAGE = bytes(tmp, 'utf-8') print(stacks_handler.get_rasps_from_stack(stack_id)) rid = stacks_handler.get_rasps_from_stack(stack_id) for id in rid: str_id = str(id) rasp = global_settings.rasps[str_id] IP = rasp._ip print("ip", IP) udpsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) udpsock.setblocking(False) s = UDPStream(udpsock) udpsock.sendto(MESSAGE, (IP, PORT)) dataObject = yield tornado.gen.Task(s.read_chunk) code_status = dataObject[1]["code"] data = dataObject[1]["data"] rasps_handler.update_rasp_by_id(str_id, jsonRequestAction["action"], data, code_status) ip = dataObject[1]["ip"] print("DATA:", data) print("CODE:", code_status) print("IP:", ip)
def post(self): requestAction = self.request.body strRequestAction = requestAction.decode("utf-8") jsonRequestAction = json.loads(strRequestAction) slave_id = str(jsonRequestAction["id"]) print(global_settings.rasps) rasp = global_settings.rasps[slave_id] IP = rasp._ip if jsonRequestAction["action"] == "ping": #Variable provisoire en attendant le mapping response = os.system(config['rasps']['Ping'] + ' ' + IP + "> /dev/null 2>&1") if response == 0: date = datetime.datetime.now() date = date.strftime('%d/%m/%Y') print(rasp._id) rasps_handler.update_rasp_by_id(slave_id, "ping", date, 200) self.respond(date, 200) else: self.respond(IP + " is down", 404) else: MESSAGE = " " tmp = "rasps:" + jsonRequestAction["action"] MESSAGE = bytes(tmp, 'utf-8') udpsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) udpsock.setblocking(False) s = UDPStream(udpsock) udpsock.sendto(MESSAGE, (IP, PORT)) dataObject = yield tornado.gen.Task(s.read_chunk) code_status = dataObject[1]["code"] data = dataObject[1]["data"] rasps_handler.update_rasp_by_id(slave_id, jsonRequestAction["action"], data, code_status) ip = dataObject[1]["ip"] print("DATA:", data) print("CODE:", code_status) print("IP:", ip) self.respond(data, code_status)
def post(self): requestAction = self.request.body strRequestAction = requestAction.decode("utf-8") jsonRequestAction = json.loads(strRequestAction) stack_id = int(jsonRequestAction["id"]) if jsonRequestAction["action"] == "ping": print("-----------Pinging stack-----------") id_str = jsonRequestAction["id"] stacks_handler.ping_rasps_in_stack(id_str) elif jsonRequestAction["action"] == "shutdown": stack_power.powerup_stack(stack_id) elif jsonRequestAction["action"] == "reboot": stack_power.powerdown_stack(stack_id) time.sleep(1) stack_power.powerup_stack(stack_id) else: tmp = "rasps:"+jsonRequestAction["action"] MESSAGE = bytes(tmp,'utf-8') print(stacks_handler.get_rasps_from_stack(stack_id)) rid = stacks_handler.get_rasps_from_stack(stack_id) for id in rid: str_id = str(id) rasp = global_settings.rasps[str_id] IP = rasp._ip print("ip", IP) udpsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) udpsock.setblocking(False) s = UDPStream(udpsock) udpsock.sendto(MESSAGE,(IP, PORT)) dataObject = yield tornado.gen.Task( s.read_chunk ) code_status = dataObject[1]["code"] data = dataObject[1]["data"] rasps_handler.update_rasp_by_id(str_id,jsonRequestAction["action"],data,code_status) ip = dataObject[1]["ip"] print("DATA:", data) print("CODE:", code_status) print("IP:", ip)
def post(self): requestAction = self.request.body strRequestAction = requestAction.decode("utf-8") jsonRequestAction = json.loads(strRequestAction) slave_id = str(jsonRequestAction["id"]) print(global_settings.rasps) rasp = global_settings.rasps[slave_id] IP = rasp._ip if jsonRequestAction["action"] == "ping": #Variable provisoire en attendant le mapping response = os.system( config['rasps']['Ping'] +' '+ IP + "> /dev/null 2>&1") if response == 0: date = datetime.datetime.now() date = date.strftime('%d/%m/%Y') print(rasp._id) rasps_handler.update_rasp_by_id(slave_id,"ping",date,200) self.respond(date , 200) else: self.respond(IP + " is down", 404) else: MESSAGE = " " tmp = "rasps:"+jsonRequestAction["action"] MESSAGE = bytes(tmp,'utf-8') udpsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) udpsock.setblocking(False) s = UDPStream(udpsock) udpsock.sendto(MESSAGE,(IP, PORT)) dataObject = yield tornado.gen.Task( s.read_chunk ) code_status = dataObject[1]["code"] data = dataObject[1]["data"] rasps_handler.update_rasp_by_id(slave_id,jsonRequestAction["action"],data,code_status) ip = dataObject[1]["ip"] print("DATA:", data) print("CODE:", code_status) print("IP:", ip) self.respond(data, code_status)