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 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): 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: try:
if ifname in yaml['bridgedomains']: if ifname in yaml['bridgedomains']:
return ifname, yaml['bridgedomains'][ifname] return ifname, yaml['bridgedomains'][ifname]
@ -47,19 +62,15 @@ def get_by_name(yaml, ifname):
def is_bridgedomain(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) ifname, iface = get_by_name(yaml, ifname)
return not iface == None return not iface == None
def is_bvi(yaml, ifname): def is_bvi(yaml, ifname):
""" Returns True if the interface name is an existing BVI. """ """ Returns True if the interface name (bvi*) is an existing BVI. """
if not ifname.startswith("bvi"):
return False bridgename, bridge = get_by_bvi_name(yaml, ifname)
idx = ifname[3:]
if not idx.isnumeric():
return False
bridgename, bridge = get_by_name(yaml, "bd%d" % (int(idx)))
if not bridge: if not bridge:
return False return False

View File

@ -16,6 +16,19 @@ class TestBridgeDomainMethods(unittest.TestCase):
self.assertIsNone(iface) self.assertIsNone(iface)
self.assertIsNone(ifname) 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): def test_get_by_name(self):
ifname, iface = bridgedomain.get_by_name(self.cfg, "bd10") ifname, iface = bridgedomain.get_by_name(self.cfg, "bd10")
self.assertIsNotNone(iface) self.assertIsNotNone(iface)