def __init__(self, conn, worker): super(MonitorClient, self).__init__() # Gather information self.server = conn self.worker = worker # Generate UUID, one based on MAC address and one based on PID macs = ipinfo.getMACs() pid = os.getpid()
def onClose(self): """When Worker quits, tell the Monitor to signoff""" print "closing connection infomation to %s" % self.server["address"] self.stop_thread = True send_obj = { "monitor_instance_id" : self.monitor_state_id, "worker_mac" : ipinfo.getMACs()[0].str, "worker_pid" : os.getpid() } j = json.dumps(send_obj) self.send(j, "onClose")
def onDisconnection(self): """Call on disconnection""" send_obj = { "worker_mac" : ipinfo.getMACs()[0].str, "worker_pid" : os.getpid(), "jobsprocessed" : self.worker.jobsprocessed, "monitor_instance_id" : self.monitor_state_id, "job_id" : self.current_job_id } j = json.dumps(send_obj) self.send(j, "endJob")
def onConnection(self): """On accepted connection with a Master, submit job information to GluinoMontor""" send_obj = { "monitor_instance_id" : self.monitor_state_id, "worker_mac" : ipinfo.getMACs()[0].str, "worker_pid" : os.getpid(), "jobfiles" : self.worker.jobs["input"], "userip" : self.worker.last_accepted[0] } j = json.dumps(send_obj) self.current_job_id = self.send(j, "onJob")
def onStart(self): """Starting Worker""" print "Sending connection infomation to %s" % self.server["address"] send_obj = { "worker_mac" : ipinfo.getMACs()[0].str, "worker_pid" : os.getpid(), "worker_port" : self.worker.port, "worker_maxcores" : self.worker.maxcores, "worker_ipaddress" : self.worker.ipaddress, "worker_name" : self.worker.hostname, "heartbeat" : datetime.datetime.utcnow().__str__() } j = json.dumps(send_obj) self.monitor_state_id = self.send(j, "onStart") print "Monitor reports the id=%d for this worker" % int(self.monitor_state_id) ## Start heartbeat self.stop_thread = False self.heartbeat_thread = threading.Thread(target=self.heartbeat) self.heartbeat_thread.start()