def eventBeatWorker(self,lbPort,eventPort,services,index): server = services.getServer(lbPort,index) socket = SocketConnection() try: #socket.connect(server.getIp(),int(eventPort),30) socket.connect(server.getIp(),int(eventPort),int(sdnlb_conf.iperf_tout)*3) if (sdnlb_conf.algo =="cpu"): cmd = "iperf" args = [] elif (sdnlb_conf.algo == "connections"): cmd = "netstat" args = [server.getPort()] msg = JsonMessage.genCmdReqMessage(cmd,args) socket.send(msg) msg = socket.receive() #DEBUG print "HB msg recv:",msg #FINDEBUG if msg != '': (msgtype, data) = JsonMessage.parse_json(msg) if (msgtype == msgTypes['cmd_ans']): if (data['cmd'] == "iperf"): port = int(data['args']) time.sleep(4) # wait for iperf to start running cmd = 'iperf3 -c %s -t %d -p %d -J'%(server.getIp(),int(sdnlb_conf.iperf_tout),int(port)) p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True) output = p.stdout.read() json_msg = JsonMessage.parse_iperf_json(output) if (json_msg['end']['cpu_utilization_percent']['remote_system'] != None): #cpu_load = json_msg['end']['cpu_utilization_percent']['remote_system'] cpu_load = json_msg['end']['cpu_utilization_percent']['remote_total'] #DEBUG print "CPU_LOAD:",cpu_load #FINDEBUG server.setCpu(float(cpu_load)) elif (data['cmd'] == "netstat"): connections = int(data['args']) server.setConnections(int(connections)) #DEBUG print "EB CONNS:",connections #FINDEBUG except Exception,e: # cannot connect with server #print "Exception" #print e #print "STATUS DOWN" server.setStatus(False)
def heartBeat(self): for service in self.services.getServices(): index = 0 lbPort = service.getLbPort() for server in service.getServers(): socket = SocketConnection() try: socket.connect(server.getIp(),server.getPort()) print "STATUS OK" server.setStatus(True) except Exception,e: # cannot connect with server #print e #print "STATUS DOWN" server.setStatus(False) finally: socket.close()