Esempio n. 1
0
    def print_adj_delta(self, key, value, delta, global_adj_db,
                        global_publication_db):
        _, reported_node_name = key.split(":", 1)
        new_adj_db = serializer.deserialize_thrift_object(
            value.value, lsdb_types.AdjacencyDatabase)
        if delta:
            old_adj_db = global_adj_db.get(new_adj_db.thisNodeName, None)
            if old_adj_db is None:
                lines = ("ADJ_DB_ADDED: {}\n".format(new_adj_db.thisNodeName) +
                         utils.sprint_adj_db_full(global_adj_db, new_adj_db,
                                                  False)[1])
            else:
                lines = utils.sprint_adj_db_delta(new_adj_db, old_adj_db)
                lines = "\n".join(lines)
        else:
            _, lines = utils.sprint_adj_db_full(global_adj_db, new_adj_db,
                                                False)

        if lines:
            self.print_timestamp()
            self.print_publication_delta(
                "{}'s adjacencies".format(reported_node_name),
                utils.sprint_pub_update(global_publication_db, key, value),
                lines,
            )

        utils.update_global_adj_db(global_adj_db, new_adj_db)
Esempio n. 2
0
    def print_adj_delta(
        self,
        key: str,
        value: openr_types.Value,
        delta: bool,
        global_adj_db: Dict,
        global_publication_db: Dict,
    ):
        new_adj_db = serializer.deserialize_thrift_object(
            value.value, openr_types.AdjacencyDatabase)
        if delta:
            old_adj_db = global_adj_db.get(new_adj_db.thisNodeName, None)
            if old_adj_db is None:
                lines = "ADJ_DB_ADDED: {}\n".format(
                    new_adj_db.thisNodeName) + utils.sprint_adj_db_full(
                        global_adj_db, new_adj_db, False)
            else:
                lines = utils.sprint_adj_db_delta(new_adj_db, old_adj_db)
                lines = "\n".join(lines)
        else:
            lines = utils.sprint_adj_db_full(global_adj_db, new_adj_db, False)

        if lines:
            self.print_publication_delta(
                "{}'s adjacencies".format(new_adj_db.thisNodeName),
                utils.sprint_pub_update(global_publication_db, key, value),
                lines,
                timestamp=True,
            )

        utils.update_global_adj_db(global_adj_db, new_adj_db)