Skip to content

Commit

Permalink
[show priority-group drop counters] Remove backup with cached PG drop…
Browse files Browse the repository at this point in the history
… counters after 'config reload' (#2386)

#### What I did
After config reload for some period of time when COUNTERS_PG_PORT_MAP is not created yet, CLI command 'show prioriy-group counter' exits with the traceback because it expects COUNTERS_PG_PORT_MAP to be present and doesn't do proper handling for the situation when it is not yet populated.
Handling was fixed

#### How I did it
use "not" instead of "is None"

#### How to verify it
UT added

#### Previous command output (if the output of a command-line utility has changed)
```
root@r-lionfish-13:/home/admin# show priority-group drop counters
Traceback (most recent call last):
  File "/usr/local/bin/pg-drop", line 262, in <module>
    main()
  File "/usr/local/bin/pg-drop", line 255, in main
    pgdropstat.print_all_stat(COUNTER_TABLE_PREFIX, "pg_drop" )
  File "/usr/local/bin/pg-drop", line 160, in print_all_stat
    self.build_header(type)
  File "/usr/local/bin/pg-drop", line 119, in build_header
    single_key = list(header_map.keys())[0]
IndexError: list index out of range

```

#### New command output (if the output of a command-line utility has changed)

`COUNTERS_PORT_NAME_MAP is empty!`
  • Loading branch information
ayurkiv-nvda authored and yxieca committed Oct 25, 2022
1 parent dffcc53 commit 14646ff
Show file tree
Hide file tree
Showing 6 changed files with 362 additions and 15 deletions.
18 changes: 9 additions & 9 deletions scripts/pg-drop
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,15 @@ class PgDropStat(object):
Get port ID using object ID
"""
port_id = self.counters_db.get(self.counters_db.COUNTERS_DB, COUNTERS_PG_PORT_MAP, oid)
if port_id is None:
print("Port is not available for oid '{}'".format(oid), file=sys.stderr)
if not port_id:
print("Port is not available for oid '{}'".format(oid))
sys.exit(1)
return port_id

# Get all ports
self.counter_port_name_map = self.counters_db.get_all(self.counters_db.COUNTERS_DB, COUNTERS_PORT_NAME_MAP)
if self.counter_port_name_map is None:
print("COUNTERS_PORT_NAME_MAP is empty!", file=sys.stderr)
if not self.counter_port_name_map:
print("COUNTERS_PORT_NAME_MAP is empty!")
sys.exit(1)

self.port_pg_map = {}
Expand All @@ -78,8 +78,8 @@ class PgDropStat(object):

# Get PGs for each port
counter_pg_name_map = self.counters_db.get_all(self.counters_db.COUNTERS_DB, COUNTERS_PG_NAME_MAP)
if counter_pg_name_map is None:
print("COUNTERS_PG_NAME_MAP is empty!", file=sys.stderr)
if not counter_pg_name_map:
print("COUNTERS_PG_NAME_MAP is empty!")
sys.exit(1)

for pg in counter_pg_name_map:
Expand All @@ -101,8 +101,8 @@ class PgDropStat(object):
oid - object ID for entry in redis
"""
pg_index = self.counters_db.get(self.counters_db.COUNTERS_DB, COUNTERS_PG_INDEX_MAP, oid)
if pg_index is None:
print("Priority group index is not available for oid '{}'".format(table_id), file=sys.stderr)
if not pg_index:
print("Priority group index is not available for oid '{}'".format(oid))
sys.exit(1)
return pg_index

Expand All @@ -111,7 +111,7 @@ class PgDropStat(object):
Construct header for table with PG counters
"""
if pg_drop_type is None:
print("Header info is not available!", file=sys.stderr)
print("Header info is not available!")
sys.exit(1)

self.header_list = ['Port']
Expand Down
83 changes: 83 additions & 0 deletions tests/pgdrop_input/counters_db.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
{
"COUNTERS_PORT_NAME_MAP": {
},
"COUNTERS_PG_NAME_MAP": {
"Ethernet0:0": "oid:0x1a00000000034f",
"Ethernet0:1": "oid:0x1a000000000350",
"Ethernet0:2": "oid:0x1a000000000351",
"Ethernet0:3": "oid:0x1a000000000352",
"Ethernet0:4": "oid:0x1a000000000353",
"Ethernet0:5": "oid:0x1a000000000354",
"Ethernet0:6": "oid:0x1a000000000355",
"Ethernet0:7": "oid:0x1a000000000356",
"Ethernet4:0": "oid:0x1a000000000377",
"Ethernet4:1": "oid:0x1a000000000378",
"Ethernet4:2": "oid:0x1a000000000379",
"Ethernet4:3": "oid:0x1a00000000037a",
"Ethernet4:4": "oid:0x1a00000000037b",
"Ethernet4:5": "oid:0x1a00000000037c",
"Ethernet4:6": "oid:0x1a00000000037d",
"Ethernet4:7": "oid:0x1a00000000037e",
"Ethernet8:0": "oid:0x1a00000000039f",
"Ethernet8:1": "oid:0x1a0000000003a0",
"Ethernet8:2": "oid:0x1a0000000003a1",
"Ethernet8:3": "oid:0x1a0000000003a2",
"Ethernet8:4": "oid:0x1a0000000003a3",
"Ethernet8:5": "oid:0x1a0000000003a4",
"Ethernet8:6": "oid:0x1a0000000003a5",
"Ethernet8:7": "oid:0x1a0000000003a6"
},
"COUNTERS_PG_PORT_MAP": {
"oid:0x1a00000000034f": "oid:0x1000000000012",
"oid:0x1a000000000350": "oid:0x1000000000012",
"oid:0x1a000000000351": "oid:0x1000000000012",
"oid:0x1a000000000352": "oid:0x1000000000012",
"oid:0x1a000000000353": "oid:0x1000000000012",
"oid:0x1a000000000354": "oid:0x1000000000012",
"oid:0x1a000000000355": "oid:0x1000000000012",
"oid:0x1a000000000356": "oid:0x1000000000012",
"oid:0x1a000000000377": "oid:0x1000000000013",
"oid:0x1a000000000378": "oid:0x1000000000013",
"oid:0x1a000000000379": "oid:0x1000000000013",
"oid:0x1a00000000037a": "oid:0x1000000000013",
"oid:0x1a00000000037b": "oid:0x1000000000013",
"oid:0x1a00000000037c": "oid:0x1000000000013",
"oid:0x1a00000000037d": "oid:0x1000000000013",
"oid:0x1a00000000037e": "oid:0x1000000000013",
"oid:0x1a00000000039f": "oid:0x1000000000014",
"oid:0x1a0000000003a0": "oid:0x1000000000014",
"oid:0x1a0000000003a1": "oid:0x1000000000014",
"oid:0x1a0000000003a2": "oid:0x1000000000014",
"oid:0x1a0000000003a3": "oid:0x1000000000014",
"oid:0x1a0000000003a4": "oid:0x1000000000014",
"oid:0x1a0000000003a5": "oid:0x1000000000014",
"oid:0x1a0000000003a6": "oid:0x1000000000014"
},

"COUNTERS_PG_INDEX_MAP": {
"oid:0x1a00000000034f": "0",
"oid:0x1a000000000350": "1",
"oid:0x1a000000000351": "2",
"oid:0x1a000000000352": "3",
"oid:0x1a000000000353": "4",
"oid:0x1a000000000354": "5",
"oid:0x1a000000000355": "6",
"oid:0x1a000000000356": "7",
"oid:0x1a000000000377": "0",
"oid:0x1a000000000378": "1",
"oid:0x1a000000000379": "2",
"oid:0x1a00000000037a": "3",
"oid:0x1a00000000037b": "4",
"oid:0x1a00000000037c": "5",
"oid:0x1a00000000037d": "6",
"oid:0x1a00000000037e": "7",
"oid:0x1a00000000039f": "0",
"oid:0x1a0000000003a0": "1",
"oid:0x1a0000000003a1": "2",
"oid:0x1a0000000003a2": "3",
"oid:0x1a0000000003a3": "4",
"oid:0x1a0000000003a4": "5",
"oid:0x1a0000000003a5": "6",
"oid:0x1a0000000003a6": "7"
}
}
63 changes: 63 additions & 0 deletions tests/pgdrop_input/counters_db2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
{
"COUNTERS_PORT_NAME_MAP": {
"Ethernet0": "oid:0x1000000000012",
"Ethernet4": "oid:0x1000000000013",
"Ethernet8": "oid:0x1000000000014"

},
"COUNTERS_PG_NAME_MAP": {
},
"COUNTERS_PG_PORT_MAP": {
"oid:0x1a00000000034f": "oid:0x1000000000012",
"oid:0x1a000000000350": "oid:0x1000000000012",
"oid:0x1a000000000351": "oid:0x1000000000012",
"oid:0x1a000000000352": "oid:0x1000000000012",
"oid:0x1a000000000353": "oid:0x1000000000012",
"oid:0x1a000000000354": "oid:0x1000000000012",
"oid:0x1a000000000355": "oid:0x1000000000012",
"oid:0x1a000000000356": "oid:0x1000000000012",
"oid:0x1a000000000377": "oid:0x1000000000013",
"oid:0x1a000000000378": "oid:0x1000000000013",
"oid:0x1a000000000379": "oid:0x1000000000013",
"oid:0x1a00000000037a": "oid:0x1000000000013",
"oid:0x1a00000000037b": "oid:0x1000000000013",
"oid:0x1a00000000037c": "oid:0x1000000000013",
"oid:0x1a00000000037d": "oid:0x1000000000013",
"oid:0x1a00000000037e": "oid:0x1000000000013",
"oid:0x1a00000000039f": "oid:0x1000000000014",
"oid:0x1a0000000003a0": "oid:0x1000000000014",
"oid:0x1a0000000003a1": "oid:0x1000000000014",
"oid:0x1a0000000003a2": "oid:0x1000000000014",
"oid:0x1a0000000003a3": "oid:0x1000000000014",
"oid:0x1a0000000003a4": "oid:0x1000000000014",
"oid:0x1a0000000003a5": "oid:0x1000000000014",
"oid:0x1a0000000003a6": "oid:0x1000000000014"
},

"COUNTERS_PG_INDEX_MAP": {
"oid:0x1a00000000034f": "0",
"oid:0x1a000000000350": "1",
"oid:0x1a000000000351": "2",
"oid:0x1a000000000352": "3",
"oid:0x1a000000000353": "4",
"oid:0x1a000000000354": "5",
"oid:0x1a000000000355": "6",
"oid:0x1a000000000356": "7",
"oid:0x1a000000000377": "0",
"oid:0x1a000000000378": "1",
"oid:0x1a000000000379": "2",
"oid:0x1a00000000037a": "3",
"oid:0x1a00000000037b": "4",
"oid:0x1a00000000037c": "5",
"oid:0x1a00000000037d": "6",
"oid:0x1a00000000037e": "7",
"oid:0x1a00000000039f": "0",
"oid:0x1a0000000003a0": "1",
"oid:0x1a0000000003a1": "2",
"oid:0x1a0000000003a2": "3",
"oid:0x1a0000000003a3": "4",
"oid:0x1a0000000003a4": "5",
"oid:0x1a0000000003a5": "6",
"oid:0x1a0000000003a6": "7"
}
}
62 changes: 62 additions & 0 deletions tests/pgdrop_input/counters_db3.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
{
"COUNTERS_PORT_NAME_MAP": {
"Ethernet0": "oid:0x1000000000012",
"Ethernet4": "oid:0x1000000000013",
"Ethernet8": "oid:0x1000000000014"
},
"COUNTERS_PG_NAME_MAP": {
"Ethernet0:0": "oid:0x1a00000000034f",
"Ethernet0:1": "oid:0x1a000000000350",
"Ethernet0:2": "oid:0x1a000000000351",
"Ethernet0:3": "oid:0x1a000000000352",
"Ethernet0:4": "oid:0x1a000000000353",
"Ethernet0:5": "oid:0x1a000000000354",
"Ethernet0:6": "oid:0x1a000000000355",
"Ethernet0:7": "oid:0x1a000000000356",
"Ethernet4:0": "oid:0x1a000000000377",
"Ethernet4:1": "oid:0x1a000000000378",
"Ethernet4:2": "oid:0x1a000000000379",
"Ethernet4:3": "oid:0x1a00000000037a",
"Ethernet4:4": "oid:0x1a00000000037b",
"Ethernet4:5": "oid:0x1a00000000037c",
"Ethernet4:6": "oid:0x1a00000000037d",
"Ethernet4:7": "oid:0x1a00000000037e",
"Ethernet8:0": "oid:0x1a00000000039f",
"Ethernet8:1": "oid:0x1a0000000003a0",
"Ethernet8:2": "oid:0x1a0000000003a1",
"Ethernet8:3": "oid:0x1a0000000003a2",
"Ethernet8:4": "oid:0x1a0000000003a3",
"Ethernet8:5": "oid:0x1a0000000003a4",
"Ethernet8:6": "oid:0x1a0000000003a5",
"Ethernet8:7": "oid:0x1a0000000003a6"
},
"COUNTERS_PG_PORT_MAP": {
},

"COUNTERS_PG_INDEX_MAP": {
"oid:0x1a00000000034f": "0",
"oid:0x1a000000000350": "1",
"oid:0x1a000000000351": "2",
"oid:0x1a000000000352": "3",
"oid:0x1a000000000353": "4",
"oid:0x1a000000000354": "5",
"oid:0x1a000000000355": "6",
"oid:0x1a000000000356": "7",
"oid:0x1a000000000377": "0",
"oid:0x1a000000000378": "1",
"oid:0x1a000000000379": "2",
"oid:0x1a00000000037a": "3",
"oid:0x1a00000000037b": "4",
"oid:0x1a00000000037c": "5",
"oid:0x1a00000000037d": "6",
"oid:0x1a00000000037e": "7",
"oid:0x1a00000000039f": "0",
"oid:0x1a0000000003a0": "1",
"oid:0x1a0000000003a1": "2",
"oid:0x1a0000000003a2": "3",
"oid:0x1a0000000003a3": "4",
"oid:0x1a0000000003a4": "5",
"oid:0x1a0000000003a5": "6",
"oid:0x1a0000000003a6": "7"
}
}
62 changes: 62 additions & 0 deletions tests/pgdrop_input/counters_db4.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
{
"COUNTERS_PORT_NAME_MAP": {
"Ethernet0": "oid:0x1000000000012",
"Ethernet4": "oid:0x1000000000013",
"Ethernet8": "oid:0x1000000000014"
},
"COUNTERS_PG_NAME_MAP": {
"Ethernet0:0": "oid:0x1a00000000034f",
"Ethernet0:1": "oid:0x1a000000000350",
"Ethernet0:2": "oid:0x1a000000000351",
"Ethernet0:3": "oid:0x1a000000000352",
"Ethernet0:4": "oid:0x1a000000000353",
"Ethernet0:5": "oid:0x1a000000000354",
"Ethernet0:6": "oid:0x1a000000000355",
"Ethernet0:7": "oid:0x1a000000000356",
"Ethernet4:0": "oid:0x1a000000000377",
"Ethernet4:1": "oid:0x1a000000000378",
"Ethernet4:2": "oid:0x1a000000000379",
"Ethernet4:3": "oid:0x1a00000000037a",
"Ethernet4:4": "oid:0x1a00000000037b",
"Ethernet4:5": "oid:0x1a00000000037c",
"Ethernet4:6": "oid:0x1a00000000037d",
"Ethernet4:7": "oid:0x1a00000000037e",
"Ethernet8:0": "oid:0x1a00000000039f",
"Ethernet8:1": "oid:0x1a0000000003a0",
"Ethernet8:2": "oid:0x1a0000000003a1",
"Ethernet8:3": "oid:0x1a0000000003a2",
"Ethernet8:4": "oid:0x1a0000000003a3",
"Ethernet8:5": "oid:0x1a0000000003a4",
"Ethernet8:6": "oid:0x1a0000000003a5",
"Ethernet8:7": "oid:0x1a0000000003a6"
},
"COUNTERS_PG_PORT_MAP": {
"oid:0x1a00000000034f": "oid:0x1000000000012",
"oid:0x1a000000000350": "oid:0x1000000000012",
"oid:0x1a000000000351": "oid:0x1000000000012",
"oid:0x1a000000000352": "oid:0x1000000000012",
"oid:0x1a000000000353": "oid:0x1000000000012",
"oid:0x1a000000000354": "oid:0x1000000000012",
"oid:0x1a000000000355": "oid:0x1000000000012",
"oid:0x1a000000000356": "oid:0x1000000000012",
"oid:0x1a000000000377": "oid:0x1000000000013",
"oid:0x1a000000000378": "oid:0x1000000000013",
"oid:0x1a000000000379": "oid:0x1000000000013",
"oid:0x1a00000000037a": "oid:0x1000000000013",
"oid:0x1a00000000037b": "oid:0x1000000000013",
"oid:0x1a00000000037c": "oid:0x1000000000013",
"oid:0x1a00000000037d": "oid:0x1000000000013",
"oid:0x1a00000000037e": "oid:0x1000000000013",
"oid:0x1a00000000039f": "oid:0x1000000000014",
"oid:0x1a0000000003a0": "oid:0x1000000000014",
"oid:0x1a0000000003a1": "oid:0x1000000000014",
"oid:0x1a0000000003a2": "oid:0x1000000000014",
"oid:0x1a0000000003a3": "oid:0x1000000000014",
"oid:0x1a0000000003a4": "oid:0x1000000000014",
"oid:0x1a0000000003a5": "oid:0x1000000000014",
"oid:0x1a0000000003a6": "oid:0x1000000000014"
},

"COUNTERS_PG_INDEX_MAP": {
}
}
Loading

0 comments on commit 14646ff

Please sign in to comment.