diff --git a/config/bridgedomain.py b/config/bridgedomain.py index 1d84a61..10a12bd 100644 --- a/config/bridgedomain.py +++ b/config/bridgedomain.py @@ -26,6 +26,16 @@ def get_bridgedomains(yaml): return ret +def get_by_lcp_name(yaml, lcpname): + """ Returns the bridgedomain by a given lcp name, or None,None if it does not exist """ + if not 'bridgedomains' in yaml: + return None,None + for ifname, iface in yaml['bridgedomains'].items(): + if 'lcp' in iface and iface['lcp'] == lcpname: + return ifname, iface + return None,None + + def get_by_name(yaml, ifname): """ Return the BridgeDomain by name, if it exists. Return None,None otherwise. """ try: diff --git a/config/loopback.py b/config/loopback.py index 109678c..09341d2 100644 --- a/config/loopback.py +++ b/config/loopback.py @@ -24,6 +24,16 @@ def get_loopbacks(yaml): return ret +def get_by_lcp_name(yaml, lcpname): + """ Returns the loopback by a given lcp name, or None,None if it does not exist """ + if not 'loopbacks' in yaml: + return None,None + for ifname, iface in yaml['loopbacks'].items(): + if 'lcp' in iface and iface['lcp'] == lcpname: + return ifname, iface + return None,None + + def get_by_name(yaml, ifname): """ Return the loopback by name, if it exists. Return None otherwise. """ try: diff --git a/config/test_bridgedomain.py b/config/test_bridgedomain.py index 1486486..885f04e 100644 --- a/config/test_bridgedomain.py +++ b/config/test_bridgedomain.py @@ -7,6 +7,15 @@ class TestBridgeDomainMethods(unittest.TestCase): with open("unittest/test_bridgedomain.yaml", "r") as f: self.cfg = yaml.load(f, Loader = yaml.FullLoader) + def test_get_by_lcp_name(self): + ifname, iface = bridgedomain.get_by_lcp_name(self.cfg, "bvi12") + self.assertIsNotNone(iface) + self.assertEqual("bd12", ifname) + + ifname, iface = bridgedomain.get_by_lcp_name(self.cfg, "bvi-noexist") + self.assertIsNone(iface) + self.assertIsNone(ifname) + def test_get_by_name(self): ifname, iface = bridgedomain.get_by_name(self.cfg, "bd10") self.assertIsNotNone(iface) diff --git a/config/test_loopback.py b/config/test_loopback.py index df79e1c..dc8d610 100644 --- a/config/test_loopback.py +++ b/config/test_loopback.py @@ -7,6 +7,15 @@ class TestLoopbackMethods(unittest.TestCase): with open("unittest/test_loopback.yaml", "r") as f: self.cfg = yaml.load(f, Loader = yaml.FullLoader) + def test_get_by_lcp_name(self): + ifname, iface = loopback.get_by_lcp_name(self.cfg, "loop56789012345") + self.assertIsNotNone(iface) + self.assertEqual("loop1", ifname) + + ifname, iface = loopback.get_by_lcp_name(self.cfg, "lcp-noexist") + self.assertIsNone(iface) + self.assertIsNone(ifname) + def test_get_by_name(self): ifname, iface = loopback.get_by_name(self.cfg, "loop1") self.assertIsNotNone(iface)