Skip to content

Commit c3c4905

Browse files
anamehraisabelmsft
authored andcommitted
Fixed admin state config CLI for Backport interfaces (sonic-net#2557)
Fixed admin state config CLI for Backport interfaces Fixes sonic-net/sonic-buildimage#13057
1 parent 3d53f99 commit c3c4905

File tree

2 files changed

+36
-2
lines changed

2 files changed

+36
-2
lines changed

tests/interfaces_test.py

+22
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
from click.testing import CliRunner
55
from unittest import mock
6+
from utilities_common.intf_filter import parse_interface_in_filter
67

78
import show.main as show
89

@@ -315,6 +316,27 @@ def test_supervisor_show_interfaces_alias_etp1_without_waring(self):
315316
print(result.output)
316317
assert result.exit_code != 0
317318

319+
def test_parse_interface_in_filter(self):
320+
intf_filter = "Ethernet0"
321+
intf_list = parse_interface_in_filter(intf_filter)
322+
assert len(intf_list) == 1
323+
assert intf_list[0] == "Ethernet0"
324+
325+
intf_filter = "Ethernet1-3"
326+
intf_list = parse_interface_in_filter(intf_filter)
327+
assert len(intf_list) == 3
328+
assert intf_list == ["Ethernet1", "Ethernet2", "Ethernet3"]
329+
330+
intf_filter = "Ethernet-BP10"
331+
intf_list = parse_interface_in_filter(intf_filter)
332+
assert len(intf_list) == 1
333+
assert intf_list[0] == "Ethernet-BP10"
334+
335+
intf_filter = "Ethernet-BP10-12"
336+
intf_list = parse_interface_in_filter(intf_filter)
337+
assert len(intf_list) == 3
338+
assert intf_list == ["Ethernet-BP10", "Ethernet-BP11", "Ethernet-BP12"]
339+
318340
@classmethod
319341
def teardown_class(cls):
320342
print("TEARDOWN")

utilities_common/intf_filter.py

+14-2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
SONIC_PORT_NAME_PREFIX = "Ethernet"
44
SONIC_LAG_NAME_PREFIX = "PortChannel"
5+
SONIC_BACK_PORT_NAME_PREFIX = "Ethernet-BP"
56

67
def parse_interface_in_filter(intf_filter):
78
intf_fs = []
@@ -11,7 +12,19 @@ def parse_interface_in_filter(intf_filter):
1112

1213
fs = intf_filter.split(',')
1314
for x in fs:
14-
if '-' in x:
15+
if x.startswith(SONIC_BACK_PORT_NAME_PREFIX):
16+
intf = SONIC_BACK_PORT_NAME_PREFIX
17+
x = x.split(intf)[1]
18+
if '-' in x:
19+
start = x.split('-')[0]
20+
end = x.split('-')[1]
21+
if not start.isdigit() or not end.isdigit():
22+
continue
23+
for i in range(int(start), int(end)+1):
24+
intf_fs.append(intf+str(i))
25+
else:
26+
intf_fs.append(intf+x)
27+
elif '-' in x:
1528
# handle range
1629
if not x.startswith(SONIC_PORT_NAME_PREFIX) and not x.startswith(SONIC_LAG_NAME_PREFIX):
1730
continue
@@ -40,4 +53,3 @@ def interface_in_filter(intf, filter):
4053
return True
4154

4255
return False
43-

0 commit comments

Comments
 (0)