Skip to content

Commit ae39883

Browse files
authored
Fix bug: show vlan config for vlan with no members (sonic-net#1503)
File show/vlan.py, function config(db) was modified to fill the table with VLAN even without members. Signed-off-by: allas <[email protected]>
1 parent 3a482ac commit ae39883

File tree

2 files changed

+24
-23
lines changed

2 files changed

+24
-23
lines changed

show/vlan.py

+22-23
Original file line numberDiff line numberDiff line change
@@ -109,33 +109,32 @@ def config(db):
109109
data = db.cfgdb.get_table('VLAN')
110110
keys = list(data.keys())
111111
member_data = db.cfgdb.get_table('VLAN_MEMBER')
112-
112+
interface_naming_mode = clicommon.get_interface_naming_mode()
113+
iface_alias_converter = clicommon.InterfaceAliasConverter(db)
114+
115+
def get_iface_name_for_display(member):
116+
name_for_display = member
117+
if interface_naming_mode == "alias" and member:
118+
name_for_display = iface_alias_converter.name_to_alias(member)
119+
return name_for_display
120+
121+
def get_tagging_mode(vlan, member):
122+
if not member:
123+
return ''
124+
tagging_mode = db.cfgdb.get_entry('VLAN_MEMBER', (vlan, member)).get('tagging_mode')
125+
return '?' if tagging_mode is None else tagging_mode
126+
113127
def tablelize(keys, data):
114128
table = []
115129

116130
for k in natsorted(keys):
117-
members = set(data[k].get('members', []))
118-
for (vlan, interface_name) in member_data:
119-
if vlan == k:
120-
members.add(interface_name)
121-
122-
for m in natsorted(list(members)):
123-
r = []
124-
r.append(k)
125-
r.append(data[k]['vlanid'])
126-
if clicommon.get_interface_naming_mode() == "alias":
127-
alias = clicommon.InterfaceAliasConverter(db).name_to_alias(m)
128-
r.append(alias)
129-
else:
130-
r.append(m)
131-
132-
entry = db.cfgdb.get_entry('VLAN_MEMBER', (k, m))
133-
mode = entry.get('tagging_mode')
134-
if mode is None:
135-
r.append('?')
136-
else:
137-
r.append(mode)
138-
131+
members = set([(vlan, member) for vlan, member in member_data if vlan == k] + [(k, member) for member in set(data[k].get('members', []))])
132+
# vlan with no members
133+
if not members:
134+
members = [(k, '')]
135+
136+
for vlan, member in natsorted(members):
137+
r = [vlan, data[vlan]['vlanid'], get_iface_name_for_display(member), get_tagging_mode(vlan, member)]
139138
table.append(r)
140139

141140
return table

tests/vlan_test.py

+2
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@
8585
Vlan1000 1000 Ethernet16 untagged
8686
Vlan2000 2000 Ethernet24 untagged
8787
Vlan2000 2000 Ethernet28 untagged
88+
Vlan3000 3000
8889
"""
8990

9091
show_vlan_config_in_alias_mode_output="""\
@@ -96,6 +97,7 @@
9697
Vlan1000 1000 etp5 untagged
9798
Vlan2000 2000 etp7 untagged
9899
Vlan2000 2000 etp8 untagged
100+
Vlan3000 3000
99101
"""
100102

101103
config_vlan_add_dhcp_relay_output="""\

0 commit comments

Comments
 (0)