Skip to content

Commit f573f54

Browse files
authored
Merge pull request #299 from mssonicbld/sonicbld/202603-merge
```<br>* 9cfdc5d - (HEAD -> 202603) Merge branch '202511' of https://github.com/sonic-net/sonic-utilities into 202603 (2026-04-02) [Sonic Automation] * 17c434c - (origin/202511) refactor: enhance show bfd summary command (#4411) (2026-04-01) [mssonicbld]<br>```
2 parents 4f331ff + 9cfdc5d commit f573f54

4 files changed

Lines changed: 53 additions & 7 deletions

File tree

show/main.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2649,22 +2649,29 @@ def summary(db, namespace):
26492649
"TX Interval", "RX Interval", "Multiplier", "Multihop", "Local Discriminator"]
26502650

26512651
if namespace is None:
2652-
namespace = constants.DEFAULT_NAMESPACE
2653-
2654-
bfd_keys = db.db_clients[namespace].keys(db.db.STATE_DB, "BFD_SESSION_TABLE|*")
2655-
2656-
click.echo("Total number of BFD sessions: {}".format(0 if bfd_keys is None else len(bfd_keys)))
2652+
if multi_asic.is_multi_asic():
2653+
namespace_list = multi_asic.get_namespace_list()
2654+
else:
2655+
namespace_list = [constants.DEFAULT_NAMESPACE]
2656+
else:
2657+
namespace_list = [namespace]
26572658

2659+
total_bfd_sessions = 0
26582660
bfd_body = []
2659-
if bfd_keys is not None:
2661+
for ns in namespace_list:
2662+
bfd_keys = db.db_clients[ns].keys(db.db.STATE_DB, "BFD_SESSION_TABLE|*")
2663+
if bfd_keys is None:
2664+
continue
2665+
total_bfd_sessions += len(bfd_keys)
26602666
for key in bfd_keys:
26612667
key_values = key.split('|')
2662-
values = db.db_clients[namespace].get_all(db.db.STATE_DB, key)
2668+
values = db.db_clients[ns].get_all(db.db.STATE_DB, key)
26632669
if "local_discriminator" not in values.keys():
26642670
values["local_discriminator"] = "NA"
26652671
bfd_body.append([key_values[3], key_values[2], key_values[1], values["state"], values["type"], values["local_addr"],
26662672
values["tx_interval"], values["rx_interval"], values["multiplier"], values["multihop"], values["local_discriminator"]])
26672673

2674+
click.echo("Total number of BFD sessions: {}".format(total_bfd_sessions))
26682675
click.echo(tabulate(bfd_body, bfd_headers))
26692676

26702677

tests/bfd_input/bfd_masic_test_vectors.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,18 @@
88
10.0.1.1 default VrfRed UP async_active 10.0.0.1 400 500 5 false NA
99
""" # noqa: E501
1010

11+
expected_show_bfd_summary_all_output = """\
12+
Total number of BFD sessions: 6
13+
Peer Addr Interface Vrf State Type Local Addr TX Interval RX Interval Multiplier Multihop Local Discriminator
14+
----------- ----------- ------- ------- ------------ ------------ ------------- ------------- ------------ ---------- ---------------------
15+
10.0.1.1 default default DOWN async_active 10.0.0.1 300 500 3 true NA
16+
10.0.2.1 Ethernet12 default UP async_active 10.0.0.1 200 600 3 false 88
17+
2000::10:1 default default UP async_active 2000::1 100 700 3 false NA
18+
10.0.1.1 default VrfRed UP async_active 10.0.0.1 400 500 5 false NA
19+
10.0.3.1 Ethernet36 default DOWN async_active 10.0.0.2 150 450 3 true 99
20+
2000::20:1 default VrfBlue UP async_active 2000::2 250 750 4 false NA
21+
""" # noqa: E501
22+
1123
expected_show_bfd_peer_output = """\
1224
Total number of BFD sessions for peer IP 10.0.1.1: 2
1325
Peer Addr Interface Vrf State Type Local Addr TX Interval RX Interval Multiplier Multihop Local Discriminator
@@ -22,6 +34,11 @@
2234
"args": ["-n", "asic0"],
2335
"expected_output": expected_show_bfd_summary_output,
2436
},
37+
"show_bfd_summary_masic_all": {
38+
"cmd": "summary",
39+
"args": [],
40+
"expected_output": expected_show_bfd_summary_all_output,
41+
},
2542
"show_bfd_peer_masic_asic0": {
2643
"cmd": "peer",
2744
"args": ["10.0.1.1", "-n", "asic0"],

tests/mock_tables/asic1/state_db.json

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,5 +310,24 @@
310310
"src_ip": "10.1.0.36",
311311
"state": "Down",
312312
"tx_interval": "100"
313+
},
314+
"BFD_SESSION_TABLE|default|Ethernet36|10.0.3.1": {
315+
"state": "DOWN",
316+
"type": "async_active",
317+
"local_addr" : "10.0.0.2",
318+
"tx_interval" :"150",
319+
"rx_interval" : "450",
320+
"multiplier" : "3",
321+
"multihop": "true",
322+
"local_discriminator": "99"
323+
},
324+
"BFD_SESSION_TABLE|VrfBlue|default|2000::20:1": {
325+
"state": "UP",
326+
"type": "async_active",
327+
"local_addr" : "2000::2",
328+
"tx_interval" :"250",
329+
"rx_interval" : "750",
330+
"multiplier" : "4",
331+
"multihop": "false"
313332
}
314333
}

tests/multi_asic_show_bfd_test.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ def setup_class(cls):
3232
def test_show_bfd_summary_masic_asic0(self):
3333
self.command_executor(test_data["show_bfd_summary_masic_asic0"])
3434

35+
def test_show_bfd_summary_masic_all(self):
36+
self.command_executor(test_data["show_bfd_summary_masic_all"])
37+
3538
def test_show_bfd_peer_masic_asic0(self):
3639
self.command_executor(test_data["show_bfd_peer_masic_asic0"])
3740

0 commit comments

Comments
 (0)