• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

atlanticwave-sdx / sdx-controller / 11257371528

09 Oct 2024 02:42PM UTC coverage: 56.211% (-2.2%) from 58.396%
11257371528

push

github

web-flow
Merge pull request #329 from atlanticwave-sdx/use-lc-x-for-topo-db-key

Use LC-X for topo db key

0 of 7 new or added lines in 2 files covered. (0.0%)

1 existing line in 1 file now uncovered.

1068 of 1900 relevant lines covered (56.21%)

2.25 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

27.27
/sdx_controller/handlers/lc_message_handler.py
1
import json
4✔
2
import logging
4✔
3

4
from sdx_controller.handlers.connection_handler import ConnectionHandler
4✔
5
from sdx_controller.utils.parse_helper import ParseHelper
4✔
6

7
logger = logging.getLogger(__name__)
4✔
8

9

10
class LcMessageHandler:
4✔
11
    def __init__(self, db_instance, te_manager):
4✔
12
        self.db_instance = db_instance
4✔
13
        self.te_manager = te_manager
4✔
14
        self.parse_helper = ParseHelper()
4✔
15
        self.connection_handler = ConnectionHandler(db_instance)
4✔
16

17
    def process_lc_json_msg(
4✔
18
        self,
19
        msg,
20
        latest_topo,
21
        domain_list,
22
        num_domain_topos,
23
    ):
24
        logger.info("MQ received message:" + str(msg))
×
25
        msg_json = json.loads(msg)
×
26
        msg_id = msg_json["id"]
×
27
        msg_version = msg_json["version"]
×
28

29
        domain_name = self.parse_helper.find_domain_name(msg_id, ":")
×
30
        msg_json["domain_name"] = domain_name
×
31

32
        db_msg_id = str(msg_id) + "-" + str(msg_version)
×
33
        # add message to db
34
        self.db_instance.add_key_value_pair_to_db("topologies", db_msg_id, msg)
×
35
        logger.info("Save to database complete.")
×
36
        logger.info("message ID:" + str(db_msg_id))
×
37

38
        # Update existing topology
39
        if domain_name in domain_list:
×
40
            logger.info("Updating topo")
×
41
            logger.debug(msg_json)
×
42
            self.te_manager.update_topology(msg_json)
×
43
            failed_links = self.te_manager.get_failed_links()
×
44
            if failed_links:
×
45
                logger.info("Processing link failure.")
×
46
                self.connection_handler.handle_link_failure(
×
47
                    self.te_manager, failed_links
48
                )
49
        # Add new topology
50
        else:
51
            domain_list.append(domain_name)
×
52
            self.db_instance.add_key_value_pair_to_db(
×
53
                "domains", "domain_list", domain_list
54
            )
55

56
            logger.info("Adding topology to TE manager")
×
57
            self.te_manager.add_topology(msg_json)
×
58

59
            if self.db_instance.read_from_db("topologies", "num_domain_topos") is None:
×
60
                num_domain_topos = 1
×
61
                self.db_instance.add_key_value_pair_to_db(
×
62
                    "topologies", "num_domain_topos", num_domain_topos
63
                )
64
            else:
65
                num_domain_topos = len(domain_list)
×
66

NEW
67
        db_key = "LC-" + str(num_domain_topos)
×
NEW
68
        logger.info(f"Adding topology {db_key} to db.")
×
UNCOV
69
        self.db_instance.add_key_value_pair_to_db(
×
70
            "topologies", db_key, json.dumps(msg_json)
71
        )
72

73
        # TODO: use TEManager API directly; but TEManager does not
74
        # expose a `get_topology()` method yet.
75
        latest_topo = json.dumps(
×
76
            self.te_manager.topology_manager.get_topology().to_dict()
77
        )
78
        # use 'latest_topo' as PK to save latest topo to db
79
        self.db_instance.add_key_value_pair_to_db(
×
80
            "topologies", "latest_topo", latest_topo
81
        )
82
        logger.info("Save to database complete.")
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc