44from natsort import natsorted
55from tabulate import tabulate
66
7+ from sonic_py_common import multi_asic
78import utilities_common .cli as clicommon
9+ import utilities_common .multi_asic as multi_asic_util
810import portchannel
911
10- def try_convert_interfacename_from_alias (ctx , db , interfacename ):
12+ def try_convert_interfacename_from_alias (ctx , interfacename ):
1113 """try to convert interface name from alias"""
1214
1315 if clicommon .get_interface_naming_mode () == "alias" :
1416 alias = interfacename
15- interfacename = clicommon .InterfaceAliasConverter (db ).alias_to_name (alias )
17+ interfacename = clicommon .InterfaceAliasConverter ().alias_to_name (alias )
1618 # TODO: ideally alias_to_name should return None when it cannot find
1719 # the port name for the alias
1820 if interfacename == alias :
@@ -31,19 +33,19 @@ def interfaces():
3133# 'alias' subcommand ("show interfaces alias")
3234@interfaces .command ()
3335@click .argument ('interfacename' , required = False )
34- @clicommon . pass_db
35- def alias (db , interfacename ):
36+ @multi_asic_util . multi_asic_click_options
37+ def alias (interfacename , namespace , display ):
3638 """Show Interface Name/Alias Mapping"""
3739
3840 ctx = click .get_current_context ()
3941
40- port_dict = db . cfgdb . get_table ( "PORT" )
42+ port_dict = multi_asic . get_port_table ( namespace = namespace )
4143
4244 header = ['Name' , 'Alias' ]
4345 body = []
4446
4547 if interfacename is not None :
46- interfacename = try_convert_interfacename_from_alias (ctx , db , interfacename )
48+ interfacename = try_convert_interfacename_from_alias (ctx , interfacename )
4749
4850 # If we're given an interface name, output name and alias for that interface only
4951 if interfacename in port_dict .keys ():
@@ -56,6 +58,10 @@ def alias(db, interfacename):
5658 else :
5759 # Output name and alias for all interfaces
5860 for port_name in natsorted (port_dict .keys ()):
61+ if ((display == multi_asic_util .constants .DISPLAY_EXTERNAL ) and
62+ ('role' in port_dict [port_name ]) and
63+ (port_dict [port_name ]['role' ] is multi_asic .INTERNAL_PORT )):
64+ continue
5965 if 'alias' in port_dict [port_name ]:
6066 body .append ([port_name , port_dict [port_name ]['alias' ]])
6167 else :
@@ -65,19 +71,25 @@ def alias(db, interfacename):
6571
6672@interfaces .command ()
6773@click .argument ('interfacename' , required = False )
74+ @multi_asic_util .multi_asic_click_options
6875@click .option ('--verbose' , is_flag = True , help = "Enable verbose output" )
69- @clicommon .pass_db
70- def description (db , interfacename , verbose ):
76+ def description (interfacename , namespace , display , verbose ):
7177 """Show interface status, protocol and description"""
7278
7379 ctx = click .get_current_context ()
7480
75- cmd = "intfutil description"
81+ cmd = "intfutil -c description"
7682
83+ #ignore the display option when interface name is passed
7784 if interfacename is not None :
78- interfacename = try_convert_interfacename_from_alias (ctx , db , interfacename )
85+ interfacename = try_convert_interfacename_from_alias (ctx , interfacename )
7986
80- cmd += " {}" .format (interfacename )
87+ cmd += " -i {}" .format (interfacename )
88+ else :
89+ cmd += " -d {}" .format (display )
90+
91+ if namespace is not None :
92+ cmd += " -n {}" .format (namespace )
8193
8294 clicommon .run_command (cmd , display_cmd = verbose )
8395
@@ -91,19 +103,24 @@ def naming_mode(verbose):
91103
92104@interfaces .command ()
93105@click .argument ('interfacename' , required = False )
106+ @multi_asic_util .multi_asic_click_options
94107@click .option ('--verbose' , is_flag = True , help = "Enable verbose output" )
95- @clicommon .pass_db
96- def status (db , interfacename , verbose ):
108+ def status (interfacename , namespace , display , verbose ):
97109 """Show Interface status information"""
98110
99111 ctx = click .get_current_context ()
100112
101- cmd = "intfutil status"
113+ cmd = "intfutil -c status"
102114
103115 if interfacename is not None :
104- interfacename = try_convert_interfacename_from_alias (ctx , db , interfacename )
116+ interfacename = try_convert_interfacename_from_alias (ctx , interfacename )
105117
106- cmd += " {}" .format (interfacename )
118+ cmd += " -i {}" .format (interfacename )
119+ else :
120+ cmd += " -d {}" .format (display )
121+
122+ if namespace is not None :
123+ cmd += " -n {}" .format (namespace )
107124
108125 clicommon .run_command (cmd , display_cmd = verbose )
109126
@@ -225,7 +242,7 @@ def expected(db, interfacename):
225242 for port in natsorted (neighbor_dict .keys ()):
226243 temp_port = port
227244 if clicommon .get_interface_naming_mode () == "alias" :
228- port = clicommon .InterfaceAliasConverter (db ).name_to_alias (port )
245+ port = clicommon .InterfaceAliasConverter ().name_to_alias (port )
229246 neighbor_dict [port ] = neighbor_dict .pop (temp_port )
230247 device2interface_dict [neighbor_dict [port ]['name' ]] = {'localPort' : port , 'neighborPort' : neighbor_dict [port ]['port' ]}
231248
@@ -268,8 +285,7 @@ def transceiver():
268285@click .argument ('interfacename' , required = False )
269286@click .option ('-d' , '--dom' , 'dump_dom' , is_flag = True , help = "Also display Digital Optical Monitoring (DOM) data" )
270287@click .option ('--verbose' , is_flag = True , help = "Enable verbose output" )
271- @clicommon .pass_db
272- def eeprom (db , interfacename , dump_dom , verbose ):
288+ def eeprom (interfacename , dump_dom , verbose ):
273289 """Show interface transceiver EEPROM information"""
274290
275291 ctx = click .get_current_context ()
@@ -280,7 +296,7 @@ def eeprom(db, interfacename, dump_dom, verbose):
280296 cmd += " --dom"
281297
282298 if interfacename is not None :
283- interfacename = try_convert_interfacename_from_alias (ctx , db , interfacename )
299+ interfacename = try_convert_interfacename_from_alias (ctx , interfacename )
284300
285301 cmd += " -p {}" .format (interfacename )
286302
@@ -289,16 +305,15 @@ def eeprom(db, interfacename, dump_dom, verbose):
289305@transceiver .command ()
290306@click .argument ('interfacename' , required = False )
291307@click .option ('--verbose' , is_flag = True , help = "Enable verbose output" )
292- @clicommon .pass_db
293- def lpmode (db , interfacename , verbose ):
308+ def lpmode (interfacename , verbose ):
294309 """Show interface transceiver low-power mode status"""
295310
296311 ctx = click .get_current_context ()
297312
298313 cmd = "sudo sfputil show lpmode"
299314
300315 if interfacename is not None :
301- interfacename = try_convert_interfacename_from_alias (ctx , db , interfacename )
316+ interfacename = try_convert_interfacename_from_alias (ctx , interfacename )
302317
303318 cmd += " -p {}" .format (interfacename )
304319
@@ -316,7 +331,7 @@ def presence(db, interfacename, verbose):
316331 cmd = "sfpshow presence"
317332
318333 if interfacename is not None :
319- interfacename = try_convert_interfacename_from_alias (ctx , db , interfacename )
334+ interfacename = try_convert_interfacename_from_alias (ctx , interfacename )
320335
321336 cmd += " -p {}" .format (interfacename )
322337
0 commit comments