Beispiel #1
0
    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
Beispiel #2
0
 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
Beispiel #3
0
 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