Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 13 additions & 13 deletions dump/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,10 @@
from tabulate import tabulate
from sonic_py_common import multi_asic
from utilities_common.constants import DEFAULT_NAMESPACE
from dump.match_infra import RedisSource, JsonSource, MatchEngine, CONN
from swsscommon.swsscommon import ConfigDBConnector
from dump.match_infra import RedisSource, JsonSource, ConnectionPool
from dump import plugins


# Autocompletion Helper
def get_available_modules(ctx, args, incomplete):
return [k for k in plugins.dump_modules.keys() if incomplete in k]
Expand All @@ -29,8 +28,9 @@ def show_modules(ctx, param, value):


@click.group()
def dump():
pass
@click.pass_context
def dump(ctx):
ctx.obj = MatchEngine()


@dump.command()
Expand Down Expand Up @@ -70,8 +70,7 @@ def state(ctx, module, identifier, db, table, key_map, verbose, namespace):
else:
os.environ["VERBOSE"] = "0"

ctx.module = module
obj = plugins.dump_modules[module]()
obj = plugins.dump_modules[module](ctx.obj)

if identifier == "all":
ids = obj.get_all_args(namespace)
Expand All @@ -91,10 +90,10 @@ def state(ctx, module, identifier, db, table, key_map, verbose, namespace):
if len(db) > 0:
collected_info = filter_out_dbs(db, collected_info)

vidtorid = extract_rid(collected_info, namespace)
vidtorid = extract_rid(collected_info, namespace, ctx.obj.conn_pool)

if not key_map:
collected_info = populate_fv(collected_info, module, namespace)
collected_info = populate_fv(collected_info, module, namespace, ctx.obj.conn_pool)

for id in vidtorid.keys():
collected_info[id]["ASIC_DB"]["vidtorid"] = vidtorid[id]
Expand All @@ -104,8 +103,8 @@ def state(ctx, module, identifier, db, table, key_map, verbose, namespace):
return


def extract_rid(info, ns):
r = RedisSource(ConnectionPool())
def extract_rid(info, ns, conn_pool):
r = RedisSource(conn_pool)
r.connect("ASIC_DB", ns)
vidtorid = {}
vid_cache = {} # Cache Entries to reduce number of Redis Calls
Expand Down Expand Up @@ -146,19 +145,20 @@ def filter_out_dbs(db_list, collected_info):
return collected_info


def populate_fv(info, module, namespace):
def populate_fv(info, module, namespace, conn_pool):
all_dbs = set()
for id in info.keys():
for db_name in info[id].keys():
all_dbs.add(db_name)

db_cfg_file = JsonSource()
db_conn = ConnectionPool().initialize_connector(namespace)
for db_name in all_dbs:
if db_name == "CONFIG_FILE":
db_cfg_file.connect(plugins.dump_modules[module].CONFIG_FILE, namespace)
else:
db_conn.connect(db_name)
conn_pool.get(db_name, namespace)

db_conn = conn_pool.cache.get(namespace, {}).get(CONN, None)

final_info = {}
for id in info.keys():
Expand Down
18 changes: 11 additions & 7 deletions dump/match_infra.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
from sonic_py_common import multi_asic
from utilities_common.constants import DEFAULT_NAMESPACE

# Constants
CONN = "conn"
CONN_TO = "connected_to"

EXCEP_DICT = {
"INV_REQ": "Argument should be of type MatchRequest",
"INV_DB": "DB provided is not valid",
Expand Down Expand Up @@ -249,12 +253,12 @@ def get(self, db_name, ns, update=False):
""" Returns a SonicV2Connector Object and caches it for further requests """
if ns not in self.cache:
self.cache[ns] = {}
self.cache[ns]["conn"] = self.initialize_connector(ns)
self.cache[ns]["connected_to"] = set()
if update or db_name not in self.cache[ns]["connected_to"]:
self.cache[ns]["conn"].connect(db_name)
self.cache[ns]["connected_to"].add(db_name)
return self.cache[ns]["conn"]
self.cache[ns][CONN] = self.initialize_connector(ns)
self.cache[ns][CONN_TO] = set()
if update or db_name not in self.cache[ns][CONN_TO]:
self.cache[ns][CONN].connect(db_name)
self.cache[ns][CONN_TO].add(db_name)
return self.cache[ns][CONN]

def clear(self, namespace=None):
if not namespace:
Expand All @@ -264,7 +268,7 @@ def clear(self, namespace=None):

def fill(self, ns, conn, connected_to):
""" Update internal cache """
self.cache[ns] = {'conn': conn, 'connected_to': set(connected_to)}
self.cache[ns] = {CONN: conn, CONN_TO: set(connected_to)}


class MatchEngine:
Expand Down
14 changes: 14 additions & 0 deletions tests/dump_input/dump/asic0/appl_db.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"PORT_TABLE:Ethernet0": {
"lanes": "33,34,35,36",
"description": "ARISTA01T2:Ethernet3/1/1",
"pfc_asym": "off",
"mtu": "9100",
"alias": "Ethernet1/1",
"oper_status": "up",
"admin_status": "up",
"role": "Ext",
"speed": "40000",
"asic_port_name": "Eth0-ASIC0"
}
}
6 changes: 6 additions & 0 deletions tests/dump_input/dump/asic0/asic_db.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"ASIC_STATE:SAI_OBJECT_TYPE_SWITCH:oid:0x21000000000000": {
"SAI_SWITCH_ATTR_INIT_SWITCH": "true",
"SAI_SWITCH_ATTR_SRC_MAC_ADDRESS": "DE:AD:BE:EF:CA:FE"
}
}
13 changes: 13 additions & 0 deletions tests/dump_input/dump/asic0/config_db.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"PORT|Ethernet0": {
"admin_status": "up",
"alias": "Ethernet1/1",
"asic_port_name": "Eth0-ASIC0",
"description": "ARISTA01T2:Ethernet3/1/1",
"lanes": "33,34,35,36",
"mtu": "9100",
"pfc_asym": "off",
"role": "Ext",
"speed": "40000"
}
}
20 changes: 20 additions & 0 deletions tests/dump_input/dump/asic0/state_db.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"TRANSCEIVER_INFO|Ethernet0": {
"type": "QSFP28 or later",
"vendor_rev": "AC",
"serial": "MT1706FT02064",
"manufacturer": "Mellanox",
"model": "MFA1A00-C003",
"vendor_oui": "00-02-c9",
"vendor_date": "2017-01-13 ",
"connector": "No separable connector",
"encoding": "64B66B",
"ext_identifier": "Power Class 3(2.5W max), CDR present in Rx Tx",
"ext_rateselect_compliance": "QSFP+ Rate Select Version 1",
"cable_type": "Length Cable Assembly(m)",
"cable_length": "3",
"specification_compliance": "{'10/40G Ethernet Compliance Code': '40G Active Cable (XLPPI)'}",
"nominal_bit_rate": "255",
"application_advertisement": "N/A"
}
}
13 changes: 13 additions & 0 deletions tests/dump_input/dump/asic1/appl_db.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"PORT_TABLE:Ethernet-BP256": {
"oper_status": "up",
"lanes": "61,62,63,64",
"description": "ASIC0:Eth16-ASIC0",
"pfc_asym": "off",
"mtu": "9100",
"alias": "Ethernet-BP256",
"admin_status": "up",
"speed": "40000",
"asic_port_name": "Eth0-ASIC1"
}
}
6 changes: 6 additions & 0 deletions tests/dump_input/dump/asic1/asic_db.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"ASIC_STATE:SAI_OBJECT_TYPE_SWITCH:oid:0x21000000000000": {
"SAI_SWITCH_ATTR_INIT_SWITCH": "true",
"SAI_SWITCH_ATTR_SRC_MAC_ADDRESS": "DE:AD:BE:EF:CA:FF"
}
}
13 changes: 13 additions & 0 deletions tests/dump_input/dump/asic1/config_db.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"PORT|Ethernet-BP256": {
"admin_status": "up",
"alias": "Ethernet-BP256",
"asic_port_name": "Eth0-ASIC1",
"description": "ASIC0:Eth16-ASIC0",
"lanes": "61,62,63,64",
"mtu": "9100",
"pfc_asym": "off",
"role": "Int",
"speed": "40000"
}
}
20 changes: 20 additions & 0 deletions tests/dump_input/dump/asic1/state_db.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"TRANSCEIVER_INFO|Ethernet-BP256": {
"type": "QSFP28 or later",
"vendor_rev": "AC",
"serial": "MT1706FT02064",
"manufacturer": "Mellanox",
"model": "MFA1A00-C003",
"vendor_oui": "00-02-c9",
"vendor_date": "2017-01-13 ",
"connector": "No separable connector",
"encoding": "64B66B",
"ext_identifier": "Power Class 3(2.5W max), CDR present in Rx Tx",
"ext_rateselect_compliance": "QSFP+ Rate Select Version 1",
"cable_type": "Length Cable Assembly(m)",
"cable_length": "3",
"specification_compliance": "{'10/40G Ethernet Compliance Code': '40G Active Cable (XLPPI)'}",
"nominal_bit_rate": "255",
"application_advertisement": "N/A"
}
}
59 changes: 59 additions & 0 deletions tests/dump_input/dump/default/appl_db.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{
"PORT_TABLE:Ethernet176": {
"index": "0",
"lanes": "0",
"alias": "etp45",
"speed": "25000",
"oper_status": "up",
"pfc_asym": "off",
"mtu": "9100",
"fec": "rs",
"admin_status": "up"
},
"PORT_TABLE:Ethernet160": {
"index": "0",
"lanes": "0",
"alias": "etp41",
"speed": "25000",
"oper_status": "up",
"pfc_asym": "off",
"mtu": "9100",
"fec": "rs",
"admin_status": "up"
},
"PORT_TABLE:Ethernet164": {
"index": "0",
"lanes": "0",
"alias": "etp42",
"speed": "25000",
"oper_status": "up",
"pfc_asym": "off",
"mtu": "9100",
"fec": "rs",
"admin_status": "up"
},
"PORT_TABLE:Ethernet0": {
"index": "0",
"lanes": "0",
"alias": "Ethernet0",
"description": "ARISTA01T2:Ethernet1",
"speed": "25000",
"oper_status": "down",
"pfc_asym": "off",
"mtu": "9100",
"fec": "rs"
},
"PORT_TABLE:Ethernet200": {
"index": "200",
"lanes": "200,201,202,203",
"alias": "Ethernet200",
"description": "Ethernet200",
"speed": "100000",
"oper_status": "down",
"fec": "rs",
"mtu": "9100",
"tpid": "0x8100",
"pfc_asym": "off",
"admin_status": "up"
}
}
50 changes: 50 additions & 0 deletions tests/dump_input/dump/default/asic_db.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
{
"ASIC_STATE:SAI_OBJECT_TYPE_HOSTIF:oid:0xd000000000a4d":{
"SAI_HOSTIF_ATTR_TYPE" : "SAI_HOSTIF_TYPE_NETDEV",
"SAI_HOSTIF_ATTR_OBJ_ID": "oid:0x100000000036a",
"SAI_HOSTIF_ATTR_NAME" : "Ethernet176",
"SAI_HOSTIF_ATTR_OPER_STATUS" : "true"
},
"ASIC_STATE:SAI_OBJECT_TYPE_PORT:oid:0x100000000036a": {
"SAI_PORT_ATTR_ADMIN_STATE" : "true",
"SAI_PORT_ATTR_SPEED" : "25000",
"SAI_PORT_ATTR_MTU" : "9122"
},
"ASIC_STATE:SAI_OBJECT_TYPE_HOSTIF:oid:0xd000000000a49":{
"SAI_HOSTIF_ATTR_TYPE" : "SAI_HOSTIF_TYPE_NETDEV",
"SAI_HOSTIF_ATTR_OBJ_ID": "oid:0x10000000002e6",
"SAI_HOSTIF_ATTR_NAME" : "Ethernet160",
"SAI_HOSTIF_ATTR_OPER_STATUS" : "true"
},
"ASIC_STATE:SAI_OBJECT_TYPE_HOSTIF:oid:0xd000000000a4a":{
"SAI_HOSTIF_ATTR_TYPE" : "SAI_HOSTIF_TYPE_NETDEV",
"SAI_HOSTIF_ATTR_OBJ_ID": "oid:0x1000000000307",
"SAI_HOSTIF_ATTR_OPER_STATUS" : "true"
},
"ASIC_STATE:SAI_OBJECT_TYPE_PORT:oid:0x1000000000307": {
"SAI_PORT_ATTR_ADMIN_STATE" : "true",
"SAI_PORT_ATTR_SPEED" : "25000",
"SAI_PORT_ATTR_MTU" : "9122"
},
"ASIC_STATE:SAI_OBJECT_TYPE_SWITCH:oid:0x21000000000000": {
"SAI_SWITCH_ATTR_INIT_SWITCH": "true",
"SAI_SWITCH_ATTR_SRC_MAC_ADDRESS": "DE:AD:BE:EF:CA:FE"
},
"ASIC_STATE:SAI_OBJECT_TYPE_HOSTIF:oid:0xd00000000056d": {
"SAI_HOSTIF_ATTR_NAME": "Ethernet0",
"SAI_HOSTIF_ATTR_OBJ_ID": "oid:0x10000000004a4",
"SAI_HOSTIF_ATTR_OPER_STATUS": "true",
"SAI_HOSTIF_ATTR_TYPE": "SAI_HOSTIF_TYPE_NETDEV",
"SAI_HOSTIF_ATTR_VLAN_TAG": "SAI_HOSTIF_VLAN_TAG_STRIP"
},
"ASIC_STATE:SAI_OBJECT_TYPE_PORT:oid:0x10000000004a4": {
"NULL": "NULL",
"SAI_PORT_ATTR_ADMIN_STATE": "true",
"SAI_PORT_ATTR_MTU": "9122",
"SAI_PORT_ATTR_SPEED": "100000"
},
"VIDTORID":{
"oid:0xd00000000056d": "oid:0xd",
"oid:0x10000000004a4": "oid:0x1690000000001"
}
}
Loading