Skip to content

Commit 90e9f2e

Browse files
[Namespace]: Simplify sync_d functions to use higher order (#154)
* [Namespace]: Simplify sync_d functions to use higher order functions. Signed-off-by: SuvarnaMeenakshi <[email protected]> * Update as per review comments. Signed-off-by: SuvarnaMeenakshi <[email protected]>
1 parent b5815d9 commit 90e9f2e

File tree

10 files changed

+32
-89
lines changed

10 files changed

+32
-89
lines changed

src/sonic_ax_impl/mibs/__init__.py

+15-74
Original file line numberDiff line numberDiff line change
@@ -578,82 +578,23 @@ def get_non_host_dbs(dbs):
578578
else:
579579
return dbs[1:]
580580

581-
582-
@staticmethod
583-
def init_namespace_sync_d_interface_tables(dbs):
584-
if_name_map = {}
585-
if_alias_map = {}
586-
if_id_map = {}
587-
oid_sai_map = {}
588-
oid_name_map = {}
589-
590-
"""
591-
all_ns_db - will have db_conn to all namespace DBs and
592-
global db. First db in the list is global db.
593-
Ignore first global db to get interface tables if there
594-
are multiple namespaces.
595-
"""
596-
Namespace.connect_namespace_dbs(dbs)
597-
for db_conn in Namespace.get_non_host_dbs(dbs):
598-
if_name_map_ns, \
599-
if_alias_map_ns, \
600-
if_id_map_ns, \
601-
oid_sai_map_ns, \
602-
oid_name_map_ns = init_sync_d_interface_tables(db_conn)
603-
if_name_map.update(if_name_map_ns)
604-
if_alias_map.update(if_alias_map_ns)
605-
if_id_map.update(if_id_map_ns)
606-
oid_sai_map.update(oid_sai_map_ns)
607-
oid_name_map.update(oid_name_map_ns)
608-
609-
return if_name_map, if_alias_map, if_id_map, oid_sai_map, oid_name_map
610-
611581
@staticmethod
612-
def init_namespace_sync_d_lag_tables(dbs):
613-
614-
lag_name_if_name_map = {}
615-
if_name_lag_name_map = {}
616-
oid_lag_name_map = {}
617-
618-
"""
619-
all_ns_db - will have db_conn to all namespace DBs and
620-
global db. First db in the list is global db.
621-
Ignore first global db to get lag tables if
622-
there are multiple namespaces.
623-
"""
624-
Namespace.connect_namespace_dbs(dbs)
625-
for db_conn in Namespace.get_non_host_dbs(dbs):
626-
lag_name_if_name_map_ns, \
627-
if_name_lag_name_map_ns, \
628-
oid_lag_name_map_ns = init_sync_d_lag_tables(db_conn)
629-
lag_name_if_name_map.update(lag_name_if_name_map_ns)
630-
if_name_lag_name_map.update(if_name_lag_name_map_ns)
631-
oid_lag_name_map.update(oid_lag_name_map_ns)
632-
633-
return lag_name_if_name_map, if_name_lag_name_map, oid_lag_name_map
634-
635-
@staticmethod
636-
def init_namespace_sync_d_queue_tables(dbs):
637-
port_queues_map = {}
638-
queue_stat_map = {}
639-
port_queue_list_map = {}
640-
641-
"""
642-
all_ns_db - will have db_conn to all namespace DBs and
643-
global db. First db in the list is global db.
644-
Ignore first global db to get queue tables if there
645-
are multiple namespaces.
646-
"""
647-
Namespace.connect_namespace_dbs(dbs)
582+
def get_sync_d_from_all_namespace(per_namespace_func, dbs):
583+
# return merged tuple of dictionaries retrieved from per
584+
# namespace functions.
585+
result_map = {}
586+
# list of return values
587+
result_list = []
648588
for db_conn in Namespace.get_non_host_dbs(dbs):
649-
port_queues_map_ns, \
650-
queue_stat_map_ns, \
651-
port_queue_list_map_ns = init_sync_d_queue_tables(db_conn)
652-
port_queues_map.update(port_queues_map_ns)
653-
queue_stat_map.update(queue_stat_map_ns)
654-
port_queue_list_map.update(port_queue_list_map_ns)
655-
656-
return port_queues_map, queue_stat_map, port_queue_list_map
589+
ns_tuple = per_namespace_func(db_conn)
590+
for idx in range(len(ns_tuple)):
591+
if idx not in result_map:
592+
result_map[idx] = ns_tuple[idx]
593+
else:
594+
result_map[idx].update(ns_tuple[idx])
595+
for idx, ns_tuple_dict in result_map.items():
596+
result_list.append(ns_tuple_dict)
597+
return result_list
657598

658599
@staticmethod
659600
def dbs_get_bridge_port_map(dbs, db_name):

src/sonic_ax_impl/mibs/ieee802_1ab.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -166,7 +166,7 @@ def reinit_data(self):
166166
self.if_alias_map, \
167167
self.if_id_map, \
168168
self.oid_sai_map, \
169-
self.oid_name_map = Namespace.init_namespace_sync_d_interface_tables(self.db_conn)
169+
self.oid_name_map = Namespace.get_sync_d_from_all_namespace(mibs.init_sync_d_interface_tables, self.db_conn)
170170

171171
self.mgmt_oid_name_map, \
172172
self.mgmt_alias_map = mibs.init_mgmt_interface_tables(self.db_conn[0])
@@ -401,7 +401,7 @@ def reinit_data(self):
401401
self.if_alias_map, \
402402
self.if_id_map, \
403403
self.oid_sai_map, \
404-
self.oid_name_map = Namespace.init_namespace_sync_d_interface_tables(self.db_conn)
404+
self.oid_name_map = Namespace.get_sync_d_from_all_namespace(mibs.init_sync_d_interface_tables, self.db_conn)
405405

406406
self.mgmt_oid_name_map, _ = mibs.init_mgmt_interface_tables(self.db_conn[0])
407407

@@ -566,7 +566,7 @@ def reinit_data(self):
566566
"""
567567
Subclass reinit data routine.
568568
"""
569-
_, _, _, _, self.oid_name_map = Namespace.init_namespace_sync_d_interface_tables(self.db_conn)
569+
_, _, _, _, self.oid_name_map = Namespace.get_sync_d_from_all_namespace(mibs.init_sync_d_interface_tables, self.db_conn)
570570

571571
self.mgmt_oid_name_map, _ = mibs.init_mgmt_interface_tables(self.db_conn[0])
572572

src/sonic_ax_impl/mibs/ietf/rfc1213.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ def reinit_data(self):
212212
self.if_alias_map, \
213213
self.if_id_map, \
214214
self.oid_sai_map, \
215-
self.oid_name_map = Namespace.init_namespace_sync_d_interface_tables(self.db_conn)
215+
self.oid_name_map = Namespace.get_sync_d_from_all_namespace(mibs.init_sync_d_interface_tables, self.db_conn)
216216
"""
217217
db_conn - will have db_conn to all namespace DBs and
218218
global db. First db in the list is global db.
@@ -234,7 +234,7 @@ def update_data(self):
234234

235235
self.lag_name_if_name_map, \
236236
self.if_name_lag_name_map, \
237-
self.oid_lag_name_map = Namespace.init_namespace_sync_d_lag_tables(self.db_conn)
237+
self.oid_lag_name_map = Namespace.get_sync_d_from_all_namespace(mibs.init_sync_d_lag_tables, self.db_conn)
238238

239239
self.if_range = sorted(list(self.oid_sai_map.keys()) +
240240
list(self.oid_lag_name_map.keys()) +

src/sonic_ax_impl/mibs/ietf/rfc2737.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ def reinit_data(self):
153153

154154
# update interface maps
155155
_, self.if_alias_map, _, _, _ = \
156-
Namespace.init_namespace_sync_d_interface_tables(Namespace.init_namespace_dbs())
156+
Namespace.get_sync_d_from_all_namespace(mibs.init_sync_d_interface_tables, Namespace.init_namespace_dbs())
157157

158158
device_metadata = mibs.get_device_metadata(self.statedb[0])
159159
chassis_sub_id = (self.CHASSIS_ID, )

src/sonic_ax_impl/mibs/ietf/rfc2863.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -77,11 +77,11 @@ def reinit_data(self):
7777
self.if_alias_map, \
7878
self.if_id_map, \
7979
self.oid_sai_map, \
80-
self.oid_name_map = Namespace.init_namespace_sync_d_interface_tables(self.db_conn)
80+
self.oid_name_map = Namespace.get_sync_d_from_all_namespace(mibs.init_sync_d_interface_tables, self.db_conn)
8181

8282
self.lag_name_if_name_map, \
8383
self.if_name_lag_name_map, \
84-
self.oid_lag_name_map = Namespace.init_namespace_sync_d_lag_tables(self.db_conn)
84+
self.oid_lag_name_map = Namespace.get_sync_d_from_all_namespace(mibs.init_sync_d_lag_tables, self.db_conn)
8585
"""
8686
db_conn - will have db_conn to all namespace DBs and
8787
global db. First db in the list is global db.

src/sonic_ax_impl/mibs/ietf/rfc4363.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ def reinit_data(self):
4141
self.if_alias_map, \
4242
self.if_id_map, \
4343
self.oid_sai_map, \
44-
self.oid_name_map = Namespace.init_namespace_sync_d_interface_tables(self.db_conn)
44+
self.oid_name_map = Namespace.get_sync_d_from_all_namespace(mibs.init_sync_d_interface_tables, self.db_conn)
4545

4646
self.if_bpid_map = Namespace.dbs_get_bridge_port_map(self.db_conn, mibs.ASIC_DB)
4747
self.bvid_vlan_map.clear()

src/sonic_ax_impl/mibs/vendor/cisco/ciscoPfcExtMIB.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def reinit_data(self):
3636
self.if_alias_map, \
3737
self.if_id_map, \
3838
self.oid_sai_map, \
39-
self.oid_name_map = Namespace.init_namespace_sync_d_interface_tables(self.db_conn)
39+
self.oid_name_map = Namespace.get_sync_d_from_all_namespace(mibs.init_sync_d_interface_tables, self.db_conn)
4040

4141
self.update_data()
4242

@@ -51,7 +51,7 @@ def update_data(self):
5151

5252
self.lag_name_if_name_map, \
5353
self.if_name_lag_name_map, \
54-
self.oid_lag_name_map = Namespace.init_namespace_sync_d_lag_tables(self.db_conn)
54+
self.oid_lag_name_map = Namespace.get_sync_d_from_all_namespace(mibs.init_sync_d_lag_tables, self.db_conn)
5555

5656
self.if_range = sorted(list(self.oid_sai_map.keys()) + list(self.oid_lag_name_map.keys()))
5757
self.if_range = [(i,) for i in self.if_range]

src/sonic_ax_impl/mibs/vendor/cisco/ciscoSwitchQosMIB.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -74,10 +74,10 @@ def reinit_data(self):
7474
self.if_alias_map, \
7575
self.if_id_map, \
7676
self.oid_sai_map, \
77-
self.oid_name_map = Namespace.init_namespace_sync_d_interface_tables(self.db_conn)
77+
self.oid_name_map = Namespace.get_sync_d_from_all_namespace(mibs.init_sync_d_interface_tables, self.db_conn)
7878

7979
self.port_queues_map, self.queue_stat_map, self.port_queue_list_map = \
80-
Namespace.init_namespace_sync_d_queue_tables(self.db_conn)
80+
Namespace.get_sync_d_from_all_namespace(mibs.init_sync_d_queue_tables, self.db_conn)
8181

8282
self.queue_type_map = Namespace.dbs_get_all(self.db_conn, mibs.COUNTERS_DB, "COUNTERS_QUEUE_TYPE_MAP", blocking=False)
8383

tests/namespace/test_mibs.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import tests.mock_tables.dbconnector
66
from sonic_ax_impl.mibs import Namespace
7+
from sonic_ax_impl import mibs
78

89
modules_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
910
sys.path.insert(0, os.path.join(modules_path, 'src'))
@@ -20,7 +21,7 @@ def test_init_namespace_sync_d_lag_tables(self):
2021

2122
lag_name_if_name_map, \
2223
if_name_lag_name_map, \
23-
oid_lag_name_map = Namespace.init_namespace_sync_d_lag_tables(dbs)
24+
oid_lag_name_map = Namespace.get_sync_d_from_all_namespace(mibs.init_sync_d_lag_tables, dbs)
2425
#PortChannel in asic0 Namespace
2526
self.assertTrue(b"PortChannel01" in lag_name_if_name_map)
2627
self.assertTrue(b"Ethernet-BP0" in lag_name_if_name_map[b"PortChannel01"])

tests/test_mibs.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
sys.path.insert(0, os.path.join(modules_path, 'src'))
99

1010
from sonic_ax_impl.mibs import Namespace
11+
from sonic_ax_impl import mibs
1112

1213
class TestGetNextPDU(TestCase):
1314
@classmethod
@@ -20,7 +21,7 @@ def test_init_sync_d_lag_tables(self):
2021

2122
lag_name_if_name_map, \
2223
if_name_lag_name_map, \
23-
oid_lag_name_map = Namespace.init_namespace_sync_d_lag_tables(db_conn)
24+
oid_lag_name_map = Namespace.get_sync_d_from_all_namespace(mibs.init_sync_d_lag_tables, db_conn)
2425

2526
self.assertTrue(b"PortChannel04" in lag_name_if_name_map)
2627
self.assertTrue(lag_name_if_name_map[b"PortChannel04"] == [b"Ethernet124"])

0 commit comments

Comments
 (0)