Ejemplo n.º 1
0
    def print_db_delta_prefix(self, kvstore_keyvals, kvstore_prefix_node_names,
                              decision_prefix_dbs, json):
        """Returns status code. 0 = success, 1 = failure"""

        prefix_maps = utils.collate_prefix_keys(kvstore_keyvals)

        for node_name, prefix_db in prefix_maps.items():
            kvstore_prefix_node_names.add(node_name)
            if node_name not in decision_prefix_dbs:
                print(
                    printing.render_vertical_table([[
                        "node {}'s prefix db is missing in Decision".format(
                            node_name)
                    ]]))
                return 1
            decision_prefix_db = decision_prefix_dbs[node_name]
            decision_prefix_set = {}

            utils.update_global_prefix_db(decision_prefix_set,
                                          decision_prefix_db)
            lines = utils.sprint_prefixes_db_delta(decision_prefix_set,
                                                   prefix_db)
            if lines:
                print(
                    printing.render_vertical_table([[
                        "node {}'s prefix db in Decision out of sync with "
                        "KvStore's".format(node_name)
                    ]]))
                print("\n".join(lines))
                return 1
        return 0
Ejemplo n.º 2
0
    def get_node_to_ips(self, client: OpenrCtrl.Client) -> Dict:
        """ get the dict of all nodes to their IP in the network """

        node_dict = {}
        keyDumpParams = self.buildKvStoreKeyDumpParams(Consts.PREFIX_DB_MARKER)
        resp = client.getKvStoreKeyValsFiltered(keyDumpParams)
        prefix_maps = utils.collate_prefix_keys(resp.keyVals)
        for node, prefix_db in prefix_maps.items():
            node_dict[node] = self.get_node_ip(prefix_db)

        return node_dict
Ejemplo n.º 3
0
    def get_node_to_ips(self, client: OpenrCtrl.Client, area: str = None) -> Dict:
        """ get the dict of all nodes to their IP in the network """

        node_dict = {}
        keyDumpParams = self.buildKvStoreKeyDumpParams(Consts.PREFIX_DB_MARKER)
        resp = kv_store_types.Publication()
        if not self.area_feature:
            resp = client.getKvStoreKeyValsFiltered(keyDumpParams)
        else:
            if area is None:
                print(f"Error: Must specify one of the areas: {self.areas}")
                sys.exit(1)
            resp = client.getKvStoreKeyValsFilteredArea(keyDumpParams, area)

        prefix_maps = utils.collate_prefix_keys(resp.keyVals)
        for node, prefix_db in prefix_maps.items():
            node_dict[node] = self.get_node_ip(prefix_db)

        return node_dict