diff --git a/orchagent/orchdaemon.cpp b/orchagent/orchdaemon.cpp index 1720552d..8ca9754b 100644 --- a/orchagent/orchdaemon.cpp +++ b/orchagent/orchdaemon.cpp @@ -1248,7 +1248,7 @@ bool DpuOrchDaemon::init() APP_DASH_VNET_TABLE_NAME, APP_DASH_VNET_MAPPING_TABLE_NAME }; - DashVnetOrch *dash_vnet_orch = new DashVnetOrch(m_applDb, dash_vnet_tables, m_dpu_appstateDb, dash_zmq_server); + DashVnetOrch *dash_vnet_orch = new DashVnetOrch(m_dpu_appDb, dash_vnet_tables, m_dpu_appstateDb, dash_zmq_server); gDirectory.set(dash_vnet_orch); vector dash_tables = { @@ -1259,7 +1259,7 @@ bool DpuOrchDaemon::init() APP_DASH_QOS_TABLE_NAME }; - DashOrch *dash_orch = new DashOrch(m_applDb, dash_tables, m_dpu_appstateDb, dash_zmq_server); + DashOrch *dash_orch = new DashOrch(m_dpu_appDb, dash_tables, m_dpu_appstateDb, dash_zmq_server); gDirectory.set(dash_orch); vector dash_ha_tables = { @@ -1277,7 +1277,7 @@ bool DpuOrchDaemon::init() APP_DASH_ROUTE_GROUP_TABLE_NAME }; - DashRouteOrch *dash_route_orch = new DashRouteOrch(m_applDb, dash_route_tables, dash_orch, m_dpu_appstateDb, dash_zmq_server); + DashRouteOrch *dash_route_orch = new DashRouteOrch(m_dpu_appDb, dash_route_tables, dash_orch, m_dpu_appstateDb, dash_zmq_server); gDirectory.set(dash_route_orch); vector dash_acl_tables = { @@ -1287,27 +1287,27 @@ bool DpuOrchDaemon::init() APP_DASH_ACL_GROUP_TABLE_NAME, APP_DASH_ACL_RULE_TABLE_NAME }; - DashAclOrch *dash_acl_orch = new DashAclOrch(m_applDb, dash_acl_tables, dash_orch, m_dpu_appstateDb, dash_zmq_server); + DashAclOrch *dash_acl_orch = new DashAclOrch(m_dpu_appDb, dash_acl_tables, dash_orch, m_dpu_appstateDb, dash_zmq_server); gDirectory.set(dash_acl_orch); vector dash_tunnel_tables = { APP_DASH_TUNNEL_TABLE_NAME }; - DashTunnelOrch *dash_tunnel_orch = new DashTunnelOrch(m_applDb, dash_tunnel_tables, m_dpu_appstateDb, dash_zmq_server); + DashTunnelOrch *dash_tunnel_orch = new DashTunnelOrch(m_dpu_appDb, dash_tunnel_tables, m_dpu_appstateDb, dash_zmq_server); gDirectory.set(dash_tunnel_orch); vector dash_meter_tables = { APP_DASH_METER_POLICY_TABLE_NAME, APP_DASH_METER_RULE_TABLE_NAME }; - DashMeterOrch *dash_meter_orch = new DashMeterOrch(m_applDb, dash_meter_tables, dash_orch, m_dpu_appstateDb, dash_zmq_server); + DashMeterOrch *dash_meter_orch = new DashMeterOrch(m_dpu_appDb, dash_meter_tables, dash_orch, m_dpu_appstateDb, dash_zmq_server); gDirectory.set(dash_meter_orch); vector dash_port_map_tables = { APP_DASH_OUTBOUND_PORT_MAP_TABLE_NAME, APP_DASH_OUTBOUND_PORT_MAP_RANGE_TABLE_NAME }; - DashPortMapOrch *dash_port_map_orch = new DashPortMapOrch(m_applDb, dash_port_map_tables, m_dpu_appstateDb, dash_zmq_server); + DashPortMapOrch *dash_port_map_orch = new DashPortMapOrch(m_dpu_appDb, dash_port_map_tables, m_dpu_appstateDb, dash_zmq_server); gDirectory.set(dash_port_map_orch); addOrchList(dash_acl_orch); diff --git a/tests/conftest.py b/tests/conftest.py index 5282f775..e6886ca7 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -277,6 +277,7 @@ class DockerVirtualSwitch: CONFIG_DB_ID = 4 FLEX_COUNTER_DB_ID = 5 STATE_DB_ID = 6 + DPU_APPL_DB_ID = 15 # FIXME: Should be broken up into helper methods in a later PR. def __init__( @@ -444,6 +445,7 @@ def create_servers(self): def reset_dbs(self): # DB wrappers are declared here, lazy-loaded in the tests self.app_db = None + self.dpu_app_db = None self.asic_db = None self.counters_db = None self.config_db = None @@ -519,6 +521,7 @@ def check_ready_status_and_init_db(self) -> None: # Initialize the databases. self.init_asic_db_validator() self.init_appl_db_validator() + self.init_dpu_appl_db_validator() self.reset_dbs() # Verify that SWSS has finished initializing. @@ -562,6 +565,9 @@ def init_asic_db_validator(self) -> None: def init_appl_db_validator(self) -> None: self.appldb = ApplDbValidator(self.APPL_DB_ID, self.redis_sock) + def init_dpu_appl_db_validator(self) -> None: + self.dpu_appldb = ApplDbValidator(self.DPU_APPL_DB_ID, self.redis_sock) + def check_swss_ready(self, timeout: int = 300) -> None: """Verify that SWSS is ready to receive inputs. @@ -784,6 +790,14 @@ def SubscribeAppDbObject(self, objpfx): pubsub.psubscribe("__keyspace@0__:%s*" % objpfx) return pubsub + # deps: warm_reboot + def SubscribeDpuAppDbObject(self, objpfx): + r = redis.Redis(unix_socket_path=self.redis_sock, db=swsscommon.DPU_APPL_DB, + encoding="utf-8", decode_responses=True) + pubsub = r.pubsub() + pubsub.psubscribe("__keyspace@0__:%s*" % objpfx) + return pubsub + # deps: warm_reboot def SubscribeAsicDbObject(self, objpfx): r = redis.Redis(unix_socket_path=self.redis_sock, db=swsscommon.ASIC_DB, @@ -1242,6 +1256,7 @@ def remove_fdb(self, vlan, mac): # policer, port_dpb_vlan, vlan def setup_db(self): self.pdb = swsscommon.DBConnector(swsscommon.APPL_DB, self.redis_sock, 0) + self.ddb = swsscommon.DBConnector(swsscommon.DPU_APPL_DB, self.redis_sock, 0) self.adb = swsscommon.DBConnector(swsscommon.ASIC_DB, self.redis_sock, 0) self.cdb = swsscommon.DBConnector(swsscommon.CONFIG_DB, self.redis_sock, 0) self.sdb = swsscommon.DBConnector(swsscommon.STATE_DB, self.redis_sock, 0) @@ -1436,6 +1451,12 @@ def get_app_db(self) -> ApplDbValidator: return self.app_db + def get_dpu_app_db(self) -> ApplDbValidator: + if not self.dpu_app_db: + self.dpu_app_db = DVSDatabase(self.DPU_APPL_DB_ID, self.redis_sock) + + return self.dpu_app_db + # FIXME: Now that AsicDbValidator is using DVSDatabase we should converge this with # that implementation. Save it for a follow-up PR. def get_asic_db(self) -> AsicDbValidator: diff --git a/tests/create_appliance.py b/tests/create_appliance.py index 199a8ec6..c503b35e 100644 --- a/tests/create_appliance.py +++ b/tests/create_appliance.py @@ -23,7 +23,7 @@ def to_string(value): return str(value) # connect to Dash ZMQ endpoint -db_connection = swsscommon.DBConnector("APPL_DB", 0) +db_connection = swsscommon.DBConnector("DPU_APPL_DB", 0) zmq_client = swsscommon.ZmqClient("tcp://127.0.0.1:8100") app_dash_appliance_table = swsscommon.ZmqProducerStateTable( db_connection, diff --git a/tests/dash/dash_db.py b/tests/dash/dash_db.py index 970a0b91..e7f88499 100644 --- a/tests/dash/dash_db.py +++ b/tests/dash/dash_db.py @@ -138,12 +138,12 @@ def set_app_db_entry(self, table_name, *args): else: pb_string = value - table = ProducerStateTable(self.dvs.get_app_db().db_connection, table_name) + table = ProducerStateTable(self.dvs.get_dpu_app_db().db_connection, table_name) table[key] = {'pb': pb_string} def remove_app_db_entry(self, table_name, *key_parts): key = ":".join(key_parts) - table = ProducerStateTable(self.dvs.get_app_db().db_connection, table_name) + table = ProducerStateTable(self.dvs.get_dpu_app_db().db_connection, table_name) del table[key] def get_asic_db_entry(self, table_name, key): @@ -204,7 +204,7 @@ def get_attr_to_sai_object_map(self, table_name, attribute): return attr_to_sai_object_map def get_app_db_keys(self, table_name): - table = Table(self.dvs.get_app_db().db_connection, table_name) + table = Table(self.dvs.get_dpu_app_db().db_connection, table_name) return table.get_keys() def get_asic_db_keys(self, table_name): @@ -214,27 +214,27 @@ def get_asic_db_keys(self, table_name): def __init__(self, dvs): self.dvs = dvs self.app_dash_routing_type_table = ProducerStateTable( - self.dvs.get_app_db().db_connection, "DASH_ROUTING_TYPE_TABLE") + self.dvs.get_dpu_app_db().db_connection, "DASH_ROUTING_TYPE_TABLE") self.app_dash_appliance_table = ProducerStateTable( - self.dvs.get_app_db().db_connection, "DASH_APPLIANCE_TABLE") + self.dvs.get_dpu_app_db().db_connection, "DASH_APPLIANCE_TABLE") self.app_dash_vnet_table = ProducerStateTable( - self.dvs.get_app_db().db_connection, "DASH_VNET_TABLE") + self.dvs.get_dpu_app_db().db_connection, "DASH_VNET_TABLE") self.app_dash_eni_table = ProducerStateTable( - self.dvs.get_app_db().db_connection, "DASH_ENI_TABLE") + self.dvs.get_dpu_app_db().db_connection, "DASH_ENI_TABLE") self.app_dash_vnet_map_table = ProducerStateTable( - self.dvs.get_app_db().db_connection, "DASH_VNET_MAPPING_TABLE") + self.dvs.get_dpu_app_db().db_connection, "DASH_VNET_MAPPING_TABLE") self.app_dash_route_table = ProducerStateTable( - self.dvs.get_app_db().db_connection, "DASH_ROUTE_TABLE") + self.dvs.get_dpu_app_db().db_connection, "DASH_ROUTE_TABLE") self.app_dash_route_rule_table = ProducerStateTable( - self.dvs.get_app_db().db_connection, "DASH_ROUTE_RULE_TABLE") + self.dvs.get_dpu_app_db().db_connection, "DASH_ROUTE_RULE_TABLE") self.app_dash_eni_route_table = ProducerStateTable( - self.dvs.get_app_db().db_connection, "DASH_ENI_ROUTE_TABLE") + self.dvs.get_dpu_app_db().db_connection, "DASH_ENI_ROUTE_TABLE") self.app_dash_route_group_table = ProducerStateTable( - self.dvs.get_app_db().db_connection, "DASH_ROUTE_GROUP_TABLE") + self.dvs.get_dpu_app_db().db_connection, "DASH_ROUTE_GROUP_TABLE") self.app_dash_meter_policy_table = ProducerStateTable( - self.dvs.get_app_db().db_connection, "DASH_METER_POLICY_TABLE") + self.dvs.get_dpu_app_db().db_connection, "DASH_METER_POLICY_TABLE") self.app_dash_meter_rule_table = ProducerStateTable( - self.dvs.get_app_db().db_connection, "DASH_METER_RULE_TABLE") + self.dvs.get_dpu_app_db().db_connection, "DASH_METER_RULE_TABLE") self.asic_dash_appliance_table = Table( self.dvs.get_asic_db().db_connection, "ASIC_STATE:SAI_OBJECT_TYPE_DASH_APPLIANCE") diff --git a/tests/dash/test_dash_acl.py b/tests/dash/test_dash_acl.py index f261baf2..3feaabde 100644 --- a/tests/dash/test_dash_acl.py +++ b/tests/dash/test_dash_acl.py @@ -154,7 +154,7 @@ def __init__(self, dvs): for table in APPL_DB_TABLE_LIST: pst = ProduceStateTable( - self.dvs.get_app_db(), table + self.dvs.get_dpu_app_db(), table ) table_variable_name = "app_{}".format(table.lower()) # Based on swsscommon convention for table names, assume