Add get_by_bvi_name() and add a few hints on the difference between 'bridgename' (bd*) and 'bvi interfacename' (bvi*)

This commit is contained in:
Pim van Pelt
2022-03-24 21:38:13 +00:00
parent 13f70758da
commit 3a74a07ee6
2 changed files with 33 additions and 9 deletions

View File

@ -36,8 +36,23 @@ def get_by_lcp_name(yaml, lcpname):
return None,None
def get_by_bvi_name(yaml, ifname):
""" Return the BridgeDomain by BVI interface name (bvi*), if it exists. Return None,None otherwise. """
if not ifname.startswith("bvi"):
return None,None
idx = ifname[3:]
if not idx.isnumeric():
return None,None
bridgename = "bd%d" % int(idx)
if bridgename in yaml['bridgedomains'] and 'lcp' in yaml['bridgedomains'][bridgename]:
return bridgename, yaml['bridgedomains'][bridgename]
return None, None
def get_by_name(yaml, ifname):
""" Return the BridgeDomain by name, if it exists. Return None,None otherwise. """
""" Return the BridgeDomain by name (bd*), if it exists. Return None,None otherwise. """
try:
if ifname in yaml['bridgedomains']:
return ifname, yaml['bridgedomains'][ifname]
@ -47,19 +62,15 @@ def get_by_name(yaml, ifname):
def is_bridgedomain(yaml, ifname):
""" Returns True if the name is an existing bridgedomain (ie bd[0-9]+). """
""" Returns True if the name (bd*) is an existing bridgedomain. """
ifname, iface = get_by_name(yaml, ifname)
return not iface == None
def is_bvi(yaml, ifname):
""" Returns True if the interface name is an existing BVI. """
if not ifname.startswith("bvi"):
return False
idx = ifname[3:]
if not idx.isnumeric():
return False
bridgename, bridge = get_by_name(yaml, "bd%d" % (int(idx)))
""" Returns True if the interface name (bvi*) is an existing BVI. """
bridgename, bridge = get_by_bvi_name(yaml, ifname)
if not bridge:
return False

View File

@ -16,6 +16,19 @@ class TestBridgeDomainMethods(unittest.TestCase):
self.assertIsNone(iface)
self.assertIsNone(ifname)
def test_get_by_bvi_name(self):
ifname, iface = bridgedomain.get_by_bvi_name(self.cfg, "bvi11")
self.assertEqual("bd11", ifname)
self.assertIsNotNone(iface)
ifname, iface = bridgedomain.get_by_bvi_name(self.cfg, "bvi10")
self.assertIsNone(ifname)
self.assertIsNone(iface)
ifname, iface = bridgedomain.get_by_bvi_name(self.cfg, "bd11")
self.assertIsNone(ifname)
self.assertIsNone(iface)
def test_get_by_name(self):
ifname, iface = bridgedomain.get_by_name(self.cfg, "bd10")
self.assertIsNotNone(iface)