Skip to content

Commit 10df75b

Browse files
Change DB that DPU orchagents listens to for all orchs (#3827)
This PR updates DASH (Data Processing Unit) orchagents to use the DPU application database instead of the standard application database for all orchestrator components. Changed database connection from APPL_DB to DPU_APPL_DB across DASH components Updated test infrastructure to support DPU application database validation Modified orchestrator daemon initialization to use DPU-specific database connections
1 parent a2decc5 commit 10df75b

File tree

5 files changed

+45
-24
lines changed

5 files changed

+45
-24
lines changed

orchagent/orchdaemon.cpp

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1281,7 +1281,7 @@ bool DpuOrchDaemon::init()
12811281
APP_DASH_VNET_TABLE_NAME,
12821282
APP_DASH_VNET_MAPPING_TABLE_NAME
12831283
};
1284-
DashVnetOrch *dash_vnet_orch = new DashVnetOrch(m_applDb, dash_vnet_tables, m_dpu_appstateDb, dash_zmq_server);
1284+
DashVnetOrch *dash_vnet_orch = new DashVnetOrch(m_dpu_appDb, dash_vnet_tables, m_dpu_appstateDb, dash_zmq_server);
12851285
gDirectory.set(dash_vnet_orch);
12861286

12871287
vector<string> dash_tables = {
@@ -1292,7 +1292,7 @@ bool DpuOrchDaemon::init()
12921292
APP_DASH_QOS_TABLE_NAME
12931293
};
12941294

1295-
DashOrch *dash_orch = new DashOrch(m_applDb, dash_tables, m_dpu_appstateDb, dash_zmq_server);
1295+
DashOrch *dash_orch = new DashOrch(m_dpu_appDb, dash_tables, m_dpu_appstateDb, dash_zmq_server);
12961296
gDirectory.set(dash_orch);
12971297

12981298
vector<string> dash_ha_tables = {
@@ -1310,7 +1310,7 @@ bool DpuOrchDaemon::init()
13101310
APP_DASH_ROUTE_GROUP_TABLE_NAME
13111311
};
13121312

1313-
DashRouteOrch *dash_route_orch = new DashRouteOrch(m_applDb, dash_route_tables, dash_orch, m_dpu_appstateDb, dash_zmq_server);
1313+
DashRouteOrch *dash_route_orch = new DashRouteOrch(m_dpu_appDb, dash_route_tables, dash_orch, m_dpu_appstateDb, dash_zmq_server);
13141314
gDirectory.set(dash_route_orch);
13151315

13161316
vector<string> dash_acl_tables = {
@@ -1320,27 +1320,27 @@ bool DpuOrchDaemon::init()
13201320
APP_DASH_ACL_GROUP_TABLE_NAME,
13211321
APP_DASH_ACL_RULE_TABLE_NAME
13221322
};
1323-
DashAclOrch *dash_acl_orch = new DashAclOrch(m_applDb, dash_acl_tables, dash_orch, m_dpu_appstateDb, dash_zmq_server);
1323+
DashAclOrch *dash_acl_orch = new DashAclOrch(m_dpu_appDb, dash_acl_tables, dash_orch, m_dpu_appstateDb, dash_zmq_server);
13241324
gDirectory.set(dash_acl_orch);
13251325

13261326
vector<string> dash_tunnel_tables = {
13271327
APP_DASH_TUNNEL_TABLE_NAME
13281328
};
1329-
DashTunnelOrch *dash_tunnel_orch = new DashTunnelOrch(m_applDb, dash_tunnel_tables, m_dpu_appstateDb, dash_zmq_server);
1329+
DashTunnelOrch *dash_tunnel_orch = new DashTunnelOrch(m_dpu_appDb, dash_tunnel_tables, m_dpu_appstateDb, dash_zmq_server);
13301330
gDirectory.set(dash_tunnel_orch);
13311331

13321332
vector<string> dash_meter_tables = {
13331333
APP_DASH_METER_POLICY_TABLE_NAME,
13341334
APP_DASH_METER_RULE_TABLE_NAME
13351335
};
1336-
DashMeterOrch *dash_meter_orch = new DashMeterOrch(m_applDb, dash_meter_tables, dash_orch, m_dpu_appstateDb, dash_zmq_server);
1336+
DashMeterOrch *dash_meter_orch = new DashMeterOrch(m_dpu_appDb, dash_meter_tables, dash_orch, m_dpu_appstateDb, dash_zmq_server);
13371337
gDirectory.set(dash_meter_orch);
13381338

13391339
vector<string> dash_port_map_tables = {
13401340
APP_DASH_OUTBOUND_PORT_MAP_TABLE_NAME,
13411341
APP_DASH_OUTBOUND_PORT_MAP_RANGE_TABLE_NAME
13421342
};
1343-
DashPortMapOrch *dash_port_map_orch = new DashPortMapOrch(m_applDb, dash_port_map_tables, m_dpu_appstateDb, dash_zmq_server);
1343+
DashPortMapOrch *dash_port_map_orch = new DashPortMapOrch(m_dpu_appDb, dash_port_map_tables, m_dpu_appstateDb, dash_zmq_server);
13441344
gDirectory.set(dash_port_map_orch);
13451345

13461346
addOrchList(dash_acl_orch);
@@ -1353,4 +1353,4 @@ bool DpuOrchDaemon::init()
13531353
addOrchList(dash_port_map_orch);
13541354

13551355
return true;
1356-
}
1356+
}

tests/conftest.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,7 @@ class DockerVirtualSwitch:
286286
CONFIG_DB_ID = 4
287287
FLEX_COUNTER_DB_ID = 5
288288
STATE_DB_ID = 6
289+
DPU_APPL_DB_ID = 15
289290

290291
# FIXME: Should be broken up into helper methods in a later PR.
291292
def __init__(
@@ -455,6 +456,7 @@ def create_servers(self):
455456
def reset_dbs(self):
456457
# DB wrappers are declared here, lazy-loaded in the tests
457458
self.app_db = None
459+
self.dpu_app_db = None
458460
self.asic_db = None
459461
self.counters_db = None
460462
self.config_db = None
@@ -530,6 +532,7 @@ def check_ready_status_and_init_db(self) -> None:
530532
# Initialize the databases.
531533
self.init_asic_db_validator()
532534
self.init_appl_db_validator()
535+
self.init_dpu_appl_db_validator()
533536
self.reset_dbs()
534537

535538
# Verify that SWSS has finished initializing.
@@ -573,6 +576,9 @@ def init_asic_db_validator(self) -> None:
573576
def init_appl_db_validator(self) -> None:
574577
self.appldb = ApplDbValidator(self.APPL_DB_ID, self.redis_sock)
575578

579+
def init_dpu_appl_db_validator(self) -> None:
580+
self.dpu_appldb = ApplDbValidator(self.DPU_APPL_DB_ID, self.redis_sock)
581+
576582
def check_swss_ready(self, timeout: int = 300) -> None:
577583
"""Verify that SWSS is ready to receive inputs.
578584
@@ -799,6 +805,14 @@ def SubscribeAppDbObject(self, objpfx):
799805
pubsub.psubscribe("__keyspace@0__:%s*" % objpfx)
800806
return pubsub
801807

808+
# deps: warm_reboot
809+
def SubscribeDpuAppDbObject(self, objpfx):
810+
r = redis.Redis(unix_socket_path=self.redis_sock, db=swsscommon.DPU_APPL_DB,
811+
encoding="utf-8", decode_responses=True)
812+
pubsub = r.pubsub()
813+
pubsub.psubscribe("__keyspace@0__:%s*" % objpfx)
814+
return pubsub
815+
802816
# deps: warm_reboot
803817
def SubscribeAsicDbObject(self, objpfx):
804818
r = redis.Redis(unix_socket_path=self.redis_sock, db=swsscommon.ASIC_DB,
@@ -1257,6 +1271,7 @@ def remove_fdb(self, vlan, mac):
12571271
# policer, port_dpb_vlan, vlan
12581272
def setup_db(self):
12591273
self.pdb = swsscommon.DBConnector(swsscommon.APPL_DB, self.redis_sock, 0)
1274+
self.ddb = swsscommon.DBConnector(swsscommon.DPU_APPL_DB, self.redis_sock, 0)
12601275
self.adb = swsscommon.DBConnector(swsscommon.ASIC_DB, self.redis_sock, 0)
12611276
self.cdb = swsscommon.DBConnector(swsscommon.CONFIG_DB, self.redis_sock, 0)
12621277
self.sdb = swsscommon.DBConnector(swsscommon.STATE_DB, self.redis_sock, 0)
@@ -1451,6 +1466,12 @@ def get_app_db(self) -> ApplDbValidator:
14511466

14521467
return self.app_db
14531468

1469+
def get_dpu_app_db(self) -> ApplDbValidator:
1470+
if not self.dpu_app_db:
1471+
self.dpu_app_db = DVSDatabase(self.DPU_APPL_DB_ID, self.redis_sock)
1472+
1473+
return self.dpu_app_db
1474+
14541475
# FIXME: Now that AsicDbValidator is using DVSDatabase we should converge this with
14551476
# that implementation. Save it for a follow-up PR.
14561477
def get_asic_db(self) -> AsicDbValidator:

tests/create_appliance.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def to_string(value):
2323
return str(value)
2424

2525
# connect to Dash ZMQ endpoint
26-
db_connection = swsscommon.DBConnector("APPL_DB", 0)
26+
db_connection = swsscommon.DBConnector("DPU_APPL_DB", 0)
2727
zmq_client = swsscommon.ZmqClient("tcp://127.0.0.1:8100")
2828
app_dash_appliance_table = swsscommon.ZmqProducerStateTable(
2929
db_connection,

tests/dash/dash_db.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -138,12 +138,12 @@ def set_app_db_entry(self, table_name, *args):
138138
else:
139139
pb_string = value
140140

141-
table = ProducerStateTable(self.dvs.get_app_db().db_connection, table_name)
141+
table = ProducerStateTable(self.dvs.get_dpu_app_db().db_connection, table_name)
142142
table[key] = {'pb': pb_string}
143143

144144
def remove_app_db_entry(self, table_name, *key_parts):
145145
key = ":".join(key_parts)
146-
table = ProducerStateTable(self.dvs.get_app_db().db_connection, table_name)
146+
table = ProducerStateTable(self.dvs.get_dpu_app_db().db_connection, table_name)
147147
del table[key]
148148

149149
def get_asic_db_entry(self, table_name, key):
@@ -204,7 +204,7 @@ def get_attr_to_sai_object_map(self, table_name, attribute):
204204
return attr_to_sai_object_map
205205

206206
def get_app_db_keys(self, table_name):
207-
table = Table(self.dvs.get_app_db().db_connection, table_name)
207+
table = Table(self.dvs.get_dpu_app_db().db_connection, table_name)
208208
return table.get_keys()
209209

210210
def get_asic_db_keys(self, table_name):
@@ -214,27 +214,27 @@ def get_asic_db_keys(self, table_name):
214214
def __init__(self, dvs):
215215
self.dvs = dvs
216216
self.app_dash_routing_type_table = ProducerStateTable(
217-
self.dvs.get_app_db().db_connection, "DASH_ROUTING_TYPE_TABLE")
217+
self.dvs.get_dpu_app_db().db_connection, "DASH_ROUTING_TYPE_TABLE")
218218
self.app_dash_appliance_table = ProducerStateTable(
219-
self.dvs.get_app_db().db_connection, "DASH_APPLIANCE_TABLE")
219+
self.dvs.get_dpu_app_db().db_connection, "DASH_APPLIANCE_TABLE")
220220
self.app_dash_vnet_table = ProducerStateTable(
221-
self.dvs.get_app_db().db_connection, "DASH_VNET_TABLE")
221+
self.dvs.get_dpu_app_db().db_connection, "DASH_VNET_TABLE")
222222
self.app_dash_eni_table = ProducerStateTable(
223-
self.dvs.get_app_db().db_connection, "DASH_ENI_TABLE")
223+
self.dvs.get_dpu_app_db().db_connection, "DASH_ENI_TABLE")
224224
self.app_dash_vnet_map_table = ProducerStateTable(
225-
self.dvs.get_app_db().db_connection, "DASH_VNET_MAPPING_TABLE")
225+
self.dvs.get_dpu_app_db().db_connection, "DASH_VNET_MAPPING_TABLE")
226226
self.app_dash_route_table = ProducerStateTable(
227-
self.dvs.get_app_db().db_connection, "DASH_ROUTE_TABLE")
227+
self.dvs.get_dpu_app_db().db_connection, "DASH_ROUTE_TABLE")
228228
self.app_dash_route_rule_table = ProducerStateTable(
229-
self.dvs.get_app_db().db_connection, "DASH_ROUTE_RULE_TABLE")
229+
self.dvs.get_dpu_app_db().db_connection, "DASH_ROUTE_RULE_TABLE")
230230
self.app_dash_eni_route_table = ProducerStateTable(
231-
self.dvs.get_app_db().db_connection, "DASH_ENI_ROUTE_TABLE")
231+
self.dvs.get_dpu_app_db().db_connection, "DASH_ENI_ROUTE_TABLE")
232232
self.app_dash_route_group_table = ProducerStateTable(
233-
self.dvs.get_app_db().db_connection, "DASH_ROUTE_GROUP_TABLE")
233+
self.dvs.get_dpu_app_db().db_connection, "DASH_ROUTE_GROUP_TABLE")
234234
self.app_dash_meter_policy_table = ProducerStateTable(
235-
self.dvs.get_app_db().db_connection, "DASH_METER_POLICY_TABLE")
235+
self.dvs.get_dpu_app_db().db_connection, "DASH_METER_POLICY_TABLE")
236236
self.app_dash_meter_rule_table = ProducerStateTable(
237-
self.dvs.get_app_db().db_connection, "DASH_METER_RULE_TABLE")
237+
self.dvs.get_dpu_app_db().db_connection, "DASH_METER_RULE_TABLE")
238238

239239
self.asic_dash_appliance_table = Table(
240240
self.dvs.get_asic_db().db_connection, "ASIC_STATE:SAI_OBJECT_TYPE_DASH_APPLIANCE")

tests/dash/test_dash_acl.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ def __init__(self, dvs):
154154

155155
for table in APPL_DB_TABLE_LIST:
156156
pst = ProduceStateTable(
157-
self.dvs.get_app_db(), table
157+
self.dvs.get_dpu_app_db(), table
158158
)
159159
table_variable_name = "app_{}".format(table.lower())
160160
# Based on swsscommon convention for table names, assume

0 commit comments

Comments
 (0)