From c7058a6d157c4a1423fb767110180d9dc144a3a8 Mon Sep 17 00:00:00 2001 From: Lawrence Lee Date: Sun, 17 Jan 2021 00:23:11 -0800 Subject: [PATCH] [minigraph.py]: Don't create mux table entries for servers w/o loopbacks (#6457) Avoid sonic-cfggen crashing when a server does not have a configured loopback address in the minigraph Signed-off-by: Lawrence Lee --- src/sonic-config-engine/minigraph.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/sonic-config-engine/minigraph.py b/src/sonic-config-engine/minigraph.py index 8b9794f2bf..f30e668251 100644 --- a/src/sonic-config-engine/minigraph.py +++ b/src/sonic-config-engine/minigraph.py @@ -1506,14 +1506,17 @@ def get_mux_cable_entries(mux_cable_ports, neighbors, devices): neighbor = neighbors[intf]['name'] entry['state'] = 'auto' - # Always force a /32 prefix for server IPv4 loopbacks - server_ipv4_lo_addr = devices[neighbor]['lo_addr'].split("/")[0] - server_ipv4_lo_prefix = ipaddress.ip_network(UNICODE_TYPE(server_ipv4_lo_addr)) - entry['server_ipv4'] = str(server_ipv4_lo_prefix) + if devices[neighbor]['lo_addr'] is not None: + # Always force a /32 prefix for server IPv4 loopbacks + server_ipv4_lo_addr = devices[neighbor]['lo_addr'].split("/")[0] + server_ipv4_lo_prefix = ipaddress.ip_network(UNICODE_TYPE(server_ipv4_lo_addr)) + entry['server_ipv4'] = str(server_ipv4_lo_prefix) - if 'lo_addr_v6' in devices[neighbor]: - entry['server_ipv6'] = devices[neighbor]['lo_addr_v6'] - mux_cable_table[intf] = entry + if 'lo_addr_v6' in devices[neighbor]: + entry['server_ipv6'] = devices[neighbor]['lo_addr_v6'] + mux_cable_table[intf] = entry + else: + print("Warning: no server IPv4 loopback found for {}, skipping mux cable table entry".format(neighbor)) return mux_cable_table