def get_node_status(self): config_api = ConfigAPI() root_path = config_api.get_consul_nodes_path() node_status = JoiningStatus.not_joined if os.path.exists(config_api.get_replace_file_path()): return node_status try: # Config try: config = configuration() node_name = config.get_node_info().name except Exception as config_exc: logger.exception( "Config file error. The PetaSAN os maybe just installed.") return node_status try: cluster_info = config.get_cluster_info().management_nodes mgmt_nodes_count = cluster_info.__len__() if mgmt_nodes_count < 3: raise Exception( "Cluster is not completed, PetaSAN will check node join status." ) consul_base = BaseAPI() data = consul_base.read_value(root_path + node_name) if data is not None and configuration( ).are_all_mgt_nodes_in_cluster_config(): return JoiningStatus.node_joined else: return JoiningStatus.not_joined except Exception as exc: cluster_info = config.get_cluster_info().management_nodes mgmt_nodes_count = cluster_info.__len__() logger.exception(exc.message) if mgmt_nodes_count < 3 and not config.is_node_in_cluster_config( ): return JoiningStatus.not_joined elif mgmt_nodes_count is 3 and config.is_node_in_cluster_config( ): return JoiningStatus.node_joined if mgmt_nodes_count is 1: return JoiningStatus.one_node_exists elif mgmt_nodes_count is 2: return JoiningStatus.two_node_exist except Exception as e: return JoiningStatus.not_joined return node_status
def __commit_local_node(self): confi_api = ConfigAPI() consul_base_api = BaseAPI() cluster_conf = configuration() try: consul_base_api.write_value( confi_api.get_consul_nodes_path() + cluster_conf.get_node_name(), cluster_conf.get_node_info().write_json()) except Exception as ex: logger.exception(ex.message) return False return True
def __commit_remote_nodes(self): confi_api = ConfigAPI() consul_base_api = BaseAPI() cluster_conf = configuration() try: for node in cluster_conf.get_remote_nodes_config( cluster_conf.get_node_name()): consul_base_api.write_value( confi_api.get_consul_nodes_path() + node.name, node.write_json()) except Exception as ex: logger.exception(ex.message) return False return True