sonic-buildimage/dockers/docker-orchagent/enable_counters.py
Andriy Yurkiv 38eef912e8
Enable PG drop counters by default, set default values only on the first start (#10935)
Signed-off-by: Andriy Yurkiv <ayurkiv@nvidia.com>

Backport form master
Appropriate PR on master: #7735
Appropriate PR on master #6444

Why I did it
PG drop counters should be enabled by default (merge from master)
After "config reload" or "docker swss restart" all counters were enabled even if they were disabled before

How I did it
1)Add PG drop counter enable option to dockers/docker-orchagent/enable_counters.py
2) Check if entry already exist before set default values

How to verify it
- install image and run counterpoll show CLI command and then you will see PG_STAT_DROP enabled
- Disable few counters
    counterpoll pg-drop disable
    counterpoll port disable
- Save and reload
   config save
   config reload
- Check enable status
2022-06-22 09:43:02 -07:00

45 lines
1.3 KiB
Python
Executable File

#!/usr/bin/env python
import swsssdk
import time
def enable_counter_group(db, name):
entry_info = db.get_entry("FLEX_COUNTER_TABLE", name)
if not entry_info:
info = {}
info['FLEX_COUNTER_STATUS'] = 'enable'
db.mod_entry("FLEX_COUNTER_TABLE", name, info)
def enable_counters():
db = swsssdk.ConfigDBConnector()
db.connect()
enable_counter_group(db, 'PORT')
enable_counter_group(db, 'QUEUE')
enable_counter_group(db, 'PFCWD')
enable_counter_group(db, 'PG_WATERMARK')
enable_counter_group(db, 'PG_DROP')
enable_counter_group(db, 'QUEUE_WATERMARK')
enable_counter_group(db, 'BUFFER_POOL_WATERMARK')
enable_counter_group(db, 'PORT_BUFFER_DROP')
if 'mlnx' in db.get_table('DEVICE_METADATA')['localhost'].get('platform'):
enable_counter_group(db, 'RIF')
def get_uptime():
with open('/proc/uptime') as fp:
return float(fp.read().split(' ')[0])
def main():
# If the switch was just started (uptime less than 5 minutes),
# wait for 3 minutes and enable counters
# otherwise wait for 60 seconds and enable counters
uptime = get_uptime()
if uptime < 300:
time.sleep(180)
else:
time.sleep(60)
enable_counters()
if __name__ == '__main__':
main()