@@ -146,7 +146,7 @@ def get_cmd_output(cmd):
146
146
iface_alias_converter = lazy_object_proxy .Proxy (lambda : clicommon .InterfaceAliasConverter ())
147
147
148
148
#
149
- # Display all storm-control data
149
+ # Display all storm-control data
150
150
#
151
151
def display_storm_all ():
152
152
""" Show storm-control """
@@ -312,17 +312,21 @@ def cli(ctx):
312
312
# 'vrf' command ("show vrf")
313
313
#
314
314
315
- def get_interface_bind_to_vrf (config_db , vrf_name ):
316
- """Get interfaces belong to vrf
315
+ def get_interface_bind_to_vrf (config_db , vrf_name_list ):
316
+ """Get all interfaces belong to all vrfs of vrf_name_list
317
317
"""
318
318
tables = ['INTERFACE' , 'PORTCHANNEL_INTERFACE' , 'VLAN_INTERFACE' , 'LOOPBACK_INTERFACE' , 'VLAN_SUB_INTERFACE' ]
319
- data = []
319
+ data = {}
320
320
for table_name in tables :
321
321
interface_dict = config_db .get_table (table_name )
322
322
if interface_dict :
323
- for interface in interface_dict :
324
- if 'vrf_name' in interface_dict [interface ] and vrf_name == interface_dict [interface ]['vrf_name' ]:
325
- data .append (interface )
323
+ for vrf_name in vrf_name_list :
324
+ for interface in interface_dict :
325
+ if 'vrf_name' in interface_dict [interface ] and vrf_name == interface_dict [interface ]['vrf_name' ]:
326
+ if vrf_name in data :
327
+ data [vrf_name ].append (interface )
328
+ else :
329
+ data [vrf_name ] = [interface ]
326
330
return data
327
331
328
332
@cli .command ()
@@ -340,12 +344,13 @@ def vrf(vrf_name):
340
344
vrfs = list (vrf_dict .keys ())
341
345
elif vrf_name in vrf_dict :
342
346
vrfs = [vrf_name ]
347
+ intfs_dict = get_interface_bind_to_vrf (config_db , vrfs )
348
+ vrfs .sort ()
343
349
for vrf in vrfs :
344
- intfs = get_interface_bind_to_vrf (config_db , vrf )
345
- intfs = natsorted (intfs )
346
- if len (intfs ) == 0 :
350
+ if vrf not in intfs_dict :
347
351
body .append ([vrf , "" ])
348
352
else :
353
+ intfs = intfs_dict [vrf ]
349
354
body .append ([vrf , intfs [0 ]])
350
355
for intf in intfs [1 :]:
351
356
body .append (["" , intf ])
@@ -444,7 +449,7 @@ def is_mgmt_vrf_enabled(ctx):
444
449
return False
445
450
446
451
#
447
- # 'storm-control' group
452
+ # 'storm-control' group
448
453
# "show storm-control [interface <interface>]"
449
454
#
450
455
@cli .group ('storm-control' , invoke_without_command = True )
@@ -2094,7 +2099,7 @@ def summary(db):
2094
2099
key_values = key .split ('|' )
2095
2100
values = db .db .get_all (db .db .STATE_DB , key )
2096
2101
if "local_discriminator" not in values .keys ():
2097
- values ["local_discriminator" ] = "NA"
2102
+ values ["local_discriminator" ] = "NA"
2098
2103
bfd_body .append ([key_values [3 ], key_values [2 ], key_values [1 ], values ["state" ], values ["type" ], values ["local_addr" ],
2099
2104
values ["tx_interval" ], values ["rx_interval" ], values ["multiplier" ], values ["multihop" ], values ["local_discriminator" ]])
2100
2105
@@ -2125,7 +2130,7 @@ def peer(db, peer_ip):
2125
2130
key_values = key .split (delimiter )
2126
2131
values = db .db .get_all (db .db .STATE_DB , key )
2127
2132
if "local_discriminator" not in values .keys ():
2128
- values ["local_discriminator" ] = "NA"
2133
+ values ["local_discriminator" ] = "NA"
2129
2134
bfd_body .append ([key_values [3 ], key_values [2 ], key_values [1 ], values .get ("state" ), values .get ("type" ), values .get ("local_addr" ),
2130
2135
values .get ("tx_interval" ), values .get ("rx_interval" ), values .get ("multiplier" ), values .get ("multihop" ), values .get ("local_discriminator" )])
2131
2136
0 commit comments