def start_nodes(self): for i in range(len(self._config)): fp = open(self._config_file, 'w') fp.write(json.dumps(self._config[i])) fp.close() ConfigurationManager.reset_configuration() server_ip = self._config[i]["ip"] server_port = self._config[i]["socket_port"] server_id = self._node_ids[i] bootstrap_server = self._config[i]["bootstrap_server"] self._nodes[i] = TestNode(node_id=server_id, node_ip=server_ip, bootstrap_node=bootstrap_server) self.start_chord_node(self._nodes[i], i) self._nodes[i].join() self.scheduler[i].enter( ConfigurationManager.get_configuration(). get_stabilize_interval(), 1, stabilize_call, ( self._nodes[i], self.scheduler[i], )) self.stabilization_thread[i] = threading.Thread( target=self.scheduler[i].run, args=(True, )) self.stabilization_thread[i].start() print("Started node {}.".format(i + 1)) self._state[i] = True time.sleep(3)
results = parser.parse_args() configuration_file = results.config bootstrap_server = results.bootstrap_server server_id = results.server_id no_hash = results.no_hash return configuration_file, bootstrap_server, server_id, no_hash if __name__ == "__main__": configuration_file, bootstrap_server, server_id, no_hash = get_arguments() os.environ[ConfigurationConstants. CHORD_CONFIGURATION_FILE_ENV_VARIABLE] = configuration_file ConfigurationManager.reset_configuration() from chord.node import Node from utilities.app_logging import Logging logger = Logging.get_logger(__name__) server_ip = ConfigurationManager.get_configuration().get_chord_server_ip() server_port = ConfigurationManager.get_configuration().get_socket_port() if not server_id: server_id = Consistent_Hashing.get_modulo_hash( server_ip + ":" + str(server_port), ConfigurationManager.get_configuration().get_m_bits()) node = Node(node_id=server_id, node_ip=server_ip, bootstrap_node=bootstrap_server) start_chord_node(node)