def ssh_key_broadcast(self, event): from pgherd.daemon import daemon self.logger.info("Receive ssh key store request with auth_key: {}".format(daemon.config.daemon.auth_key)) if event.get_message().get("auth_key") != daemon.config.daemon.auth_key: self.logger.warning("Unauthorized auth_key store request") return authorized_keys = "{}/.ssh/authorized_keys".format(os.path.expanduser('~/')) try: if not os.path.isdir(os.path.dirname(authorized_keys)): os.mkdir(os.path.dirname(authorized_keys)) f = open(authorized_keys, 'a+') for line in f: if line.strip() == event.get_message().get("key").strip(): f.close() self.logger.debug("SSH key already stored.") return f.write("{}\n".format(event.get_message().get("key"))) f.close() msg = DiscovererMessage('ssh_key.store', {'host': daemon.config.node_fqdn}) event.get_message().reply(msg) except: self.logger.exception("Failed storing ssh key into authorized_keys: {}".format(authorized_keys))
def start_negotiation(self, event): msg = event.get_message() address = msg.get_src()[0] from pgherd.daemon import daemon if address in daemon.config.discoverer.local_ips: return if address in ['127.0.0.1', '0.0.0.0']: address = msg.get_src()[0] port = msg.get('port') self.logger.debug("Creating NegotiatorConnection to node: '{}' at: {}:{}".format(msg.get('node'), address, port)) connection = NegotiatorConnection(msg.get('node'), address, port) connection.start() self._connections[msg.get('node')] = connection
def start_negotiation(self, event): msg = event.get_message() address = msg.get_src()[0] from pgherd.daemon import daemon if address in daemon.config.discoverer.local_ips: return if address in ['127.0.0.1', '0.0.0.0']: address = msg.get_src()[0] port = msg.get('port') self.logger.debug( "Creating NegotiatorConnection to node: '{}' at: {}:{}".format( msg.get('node'), address, port)) connection = NegotiatorConnection(msg.get('node'), address, port) connection.start() self._connections[msg.get('node')] = connection
def cluster_status(self, event): from pgherd.daemon import daemon if daemon.node.is_master: msg = DiscovererMessage('cluster.status', daemon.node.as_dict()) event.get_message().reply(msg) self.logger.debug("Cluster status request received")
def master_lookup(self, event): from pgherd.daemon import daemon if daemon.node.is_master: msg = DiscovererMessage('master.info', daemon.node.as_dict()) event.get_message().reply(msg) self.logger.debug("Master lookup request received")