Esempio n. 1
0
 def serve_clients(self, host, serve, task=None):
     node = self.nodes.get(dispy._node_ipaddr(host), None)
     if not node or not node._priv.auth:
         raise StopIteration(-1)
     sock = AsyncSocket(socket.socket(node._priv.sock_family,
                                      socket.SOCK_STREAM),
                        keyfile=self.keyfile,
                        certfile=self.certfile)
     sock.settimeout(MsgTimeout)
     try:
         yield sock.connect((node.ip_addr, node._priv.port))
         yield sock.sendall(node._priv.auth)
         yield sock.send_msg('SERVE_CLIENTS:'.encode() +
                             serialize({'serve': serve}))
         resp = yield sock.recv_msg()
         info = deserialize(resp)
         node.serve = info['serve']
         resp = 0
     except Exception:
         dispy.logger.debug('Setting serve clients %s to %s failed', host,
                            serve)
         resp = -1
     finally:
         sock.close()
     raise StopIteration(resp)
Esempio n. 2
0
 def service_time(self, host, control, time, task=None):
     node = self.nodes.get(dispy._node_ipaddr(host), None)
     if not node or not node._priv.auth:
         raise StopIteration(-1)
     sock = AsyncSocket(socket.socket(node._priv.sock_family,
                                      socket.SOCK_STREAM),
                        keyfile=self.keyfile,
                        certfile=self.certfile)
     sock.settimeout(MsgTimeout)
     try:
         yield sock.connect((node.ip_addr, node._priv.port))
         yield sock.sendall(node._priv.auth)
         yield sock.send_msg('SERVICE_TIME:'.encode() +
                             serialize({
                                 'control': control,
                                 'time': time
                             }))
         resp = yield sock.recv_msg()
         info = deserialize(resp)
         node.service_start = info['service_start']
         node.service_stop = info['service_stop']
         node.service_end = info['service_end']
         resp = 0
     except Exception:
         resp = -1
     sock.close()
     if resp:
         dispy.logger.debug('Setting service %s time of %s to %s failed',
                            control, host, time)
     raise StopIteration(resp)
Esempio n. 3
0
 def relay_msg(msg, task=None):
     relay = {'ip_addrs': self.scheduler_ip_addr, 'port': self.scheduler_port,
              'version': __version__}
     relay['relay'] = 'y'
     sock = AsyncSocket(socket.socket(addrinfo.family, socket.SOCK_STREAM),
                        keyfile=self.keyfile, certfile=self.certfile)
     sock.settimeout(dispy.MsgTimeout)
     yield sock.connect((msg['ip_addr'], msg['port']))
     yield sock.sendall(dispy.auth_code(self.secret, msg['sign']))
     yield sock.send_msg('PING:'.encode() + serialize(relay))
     sock.close()
Esempio n. 4
0
 def relay_msg(msg, task=None):
     relay = {'ip_addrs': self.scheduler_ip_addr, 'port': self.scheduler_port,
              'version': __version__}
     relay['relay'] = 'y'
     sock = AsyncSocket(socket.socket(addrinfo.family, socket.SOCK_STREAM),
                        keyfile=self.keyfile, certfile=self.certfile)
     sock.settimeout(dispy.MsgTimeout)
     yield sock.connect((msg['ip_addr'], msg['port']))
     yield sock.sendall(dispy.auth_code(self.secret, msg['sign']))
     yield sock.send_msg('PING:'.encode() + serialize(relay))
     sock.close()
Esempio n. 5
0
 def update_node_info(self, node, task=None):
     sock = AsyncSocket(socket.socket(node._priv.sock_family, socket.SOCK_STREAM),
                        keyfile=self.keyfile, certfile=self.certfile)
     sock.settimeout(MsgTimeout)
     try:
         yield sock.connect((node.ip_addr, node._priv.port))
         yield sock.sendall(node._priv.auth)
         yield sock.send_msg(b'NODE_STATUS:')
         info = yield sock.recv_msg()
         info = deserialize(info)
         if isinstance(info, dict):
             self.set_node_info(node, info)
     except Exception:
         # TODO: remove node if update is long ago?
         pass
     finally:
         sock.close()
Esempio n. 6
0
 def update_node_info(self, node, task=None):
     sock = AsyncSocket(socket.socket(node._priv.sock_family, socket.SOCK_STREAM),
                        keyfile=self.keyfile, certfile=self.certfile)
     sock.settimeout(MsgTimeout)
     try:
         yield sock.connect((node.ip_addr, node._priv.port))
         yield sock.sendall(node._priv.auth)
         yield sock.send_msg('NODE_STATUS:')
         info = yield sock.recv_msg()
         info = deserialize(info)
         if isinstance(info, dict):
             self.set_node_info(node, info)
     except Exception:
         logger.debug('Could not update node at %s:%s', node.ip_addr, node._priv.port)
         # TODO: remove node if update is long ago?
     finally:
         sock.close()
Esempio n. 7
0
 def set_cpus(self, host, cpus, task=None):
     node = self.nodes.get(host, None)
     if not node or not node._priv.auth:
         raise StopIteration(-1)
     sock = AsyncSocket(socket.socket(node._priv.sock_family, socket.SOCK_STREAM),
                        keyfile=self.keyfile, certfile=self.certfile)
     sock.settimeout(MsgTimeout)
     try:
         yield sock.connect((node.ip_addr, node._priv.port))
         yield sock.sendall(node._priv.auth)
         yield sock.send_msg('SET_CPUS:'.encode() + serialize({'cpus': cpus}))
         resp = yield sock.recv_msg()
         info = deserialize(resp)
         node.cpus = info['cpus']
     except Exception:
         dispy.logger.debug('Setting cpus of %s to %s failed', host, cpus)
         raise StopIteration(-1)
     else:
         raise StopIteration(0)
     finally:
         sock.close()
Esempio n. 8
0
 def serve_clients(self, host, serve, task=None):
     node = self.nodes.get(dispy._node_ipaddr(host), None)
     if not node or not node._priv.auth:
         raise StopIteration(-1)
     sock = AsyncSocket(socket.socket(node._priv.sock_family, socket.SOCK_STREAM),
                        keyfile=self.keyfile, certfile=self.certfile)
     sock.settimeout(MsgTimeout)
     try:
         yield sock.connect((node.ip_addr, node._priv.port))
         yield sock.sendall(node._priv.auth)
         yield sock.send_msg('SERVE_CLIENTS:' + serialize({'serve': serve}))
         resp = yield sock.recv_msg()
         info = deserialize(resp)
         node.serve = info['serve']
         resp = 0
     except Exception:
         dispy.logger.debug('Setting serve %s to %s failed', host, serve)
         resp = -1
     finally:
         sock.close()
     raise StopIteration(resp)
Esempio n. 9
0
 def set_cpus(self, host, cpus, task=None):
     node = self.nodes.get(host, None)
     if not node or not node._priv.auth:
         raise StopIteration(-1)
     sock = AsyncSocket(socket.socket(node._priv.sock_family, socket.SOCK_STREAM),
                        keyfile=self.keyfile, certfile=self.certfile)
     sock.settimeout(MsgTimeout)
     try:
         yield sock.connect((node.ip_addr, node._priv.port))
         yield sock.sendall(node._priv.auth)
         yield sock.send_msg('SET_CPUS:' + serialize({'cpus': cpus}))
         resp = yield sock.recv_msg()
         info = deserialize(resp)
         node.cpus = info['cpus']
     except Exception:
         dispy.logger.debug('Setting cpus of %s to %s failed', host, cpus)
         raise StopIteration(-1)
     else:
         raise StopIteration(0)
     finally:
         sock.close()
Esempio n. 10
0
 def get_node_info(self, node, task=None):
     auth = node._priv.auth
     if not auth:
         auth = dispy.auth_code(self.secret, node._priv.sign)
     sock = AsyncSocket(socket.socket(node._priv.sock_family,
                                      socket.SOCK_STREAM),
                        keyfile=self.keyfile,
                        certfile=self.certfile)
     sock.settimeout(MsgTimeout)
     try:
         yield sock.connect((node.ip_addr, node._priv.port))
         yield sock.sendall(auth)
         yield sock.send_msg(b'NODE_INFO:' + serialize({'sign': self.sign}))
         info = yield sock.recv_msg()
     except Exception:
         dispy.logger.debug('Could not get node information from %s:%s',
                            node.ip_addr, node._priv.port)
         # dispy.logger.debug(traceback.format_exc())
         raise StopIteration(-1)
     finally:
         sock.close()
     try:
         info = deserialize(info)
         node.name = info['name']
         node.cpus = info['cpus']
         node.max_cpus = info['max_cpus']
     except Exception:
         sign = info.decode()
         if node._priv.sign == sign:
             node.update_time = time.time()
             raise StopIteration(0)
         else:
             node._priv.sign = sign
             ret = yield self.get_node_info(node, task=task)
             raise StopIteration(ret)
     else:
         node._priv.auth = auth
         self.set_node_info(node, info)
         raise StopIteration(0)
Esempio n. 11
0
 def service_time(self, host, control, time, task=None):
     node = self.nodes.get(dispy._node_ipaddr(host), None)
     if not node or not node._priv.auth:
         raise StopIteration(-1)
     sock = AsyncSocket(socket.socket(node._priv.sock_family, socket.SOCK_STREAM),
                        keyfile=self.keyfile, certfile=self.certfile)
     sock.settimeout(MsgTimeout)
     try:
         yield sock.connect((node.ip_addr, node._priv.port))
         yield sock.sendall(node._priv.auth)
         yield sock.send_msg('SERVICE_TIME:' + serialize({'control': control, 'time': time}))
         resp = yield sock.recv_msg()
         info = deserialize(resp)
         node.service_start = info['service_start']
         node.service_stop = info['service_stop']
         node.service_end = info['service_end']
         resp = 0
     except Exception:
         resp = -1
     sock.close()
     if resp:
         dispy.logger.debug('Setting service %s time of %s to %s failed', control, host, time)
     raise StopIteration(resp)
Esempio n. 12
0
 def get_node_info(self, node, task=None):
     auth = node._priv.auth
     if not auth:
         auth = dispy.auth_code(self.secret, node._priv.sign)
     sock = AsyncSocket(socket.socket(node._priv.sock_family, socket.SOCK_STREAM),
                        keyfile=self.keyfile, certfile=self.certfile)
     sock.settimeout(MsgTimeout)
     try:
         yield sock.connect((node.ip_addr, node._priv.port))
         yield sock.sendall(auth)
         yield sock.send_msg('NODE_INFO:' + serialize({'sign': self.sign}))
         info = yield sock.recv_msg()
     except Exception:
         dispy.logger.debug('Could not get node information from %s:%s',
                            node.ip_addr, node._priv.port)
         # dispy.logger.debug(traceback.format_exc())
         raise StopIteration(-1)
     finally:
         sock.close()
     try:
         info = deserialize(info)
         node.name = info['name']
         node.cpus = info['cpus']
         node.max_cpus = info['max_cpus']
     except Exception:
         sign  = info.decode()
         if node._priv.sign == sign:
             node.update_time = time.time()
             raise StopIteration(0)
         else:
             node._priv.sign = sign
             raise StopIteration(yield self.get_node_info(node, task=task))
     else:
         node._priv.auth = auth
         self.set_node_info(node, info)
         raise StopIteration(0)