Migrate flush_unused_database from py-redis to sonic-swss-common (#15511)

Migrate flush_unused_database from py-redis to sonic-swss-common

#### Why I did it
flush_unused_database using py-redis, but sonic-swss-common already support flushdb, so we need migrate to sonic-swss-common

##### Work item tracking
- Microsoft ADO **(number only)**: 24292565

#### How I did it
Migrate flush_unused_database from py-redis to sonic-swss-common

#### How to verify it
Pass all UT and E2E test

#### Description for the changelog
Migrate flush_unused_database from py-redis to sonic-swss-common
This commit is contained in:
Hua Liu 2023-06-29 15:08:54 -07:00 committed by GitHub
parent aa46167fdd
commit c91707ff31
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,6 +1,5 @@
#!/usr/bin/python3
from swsscommon import swsscommon
import redis
import subprocess
import time
import syslog
@ -26,7 +25,18 @@ for instname, v in instlists.items():
continue
try:
r = redis.Redis(host=insthost, unix_socket_path=instsocket, db=dbid)
r.flushdb()
except (redis.exceptions.ConnectionError):
# Migrate code from py-redis to swsscommon, original code:
# r = redis.Redis(host=insthost, unix_socket_path=instsocket, db=dbid)
# py-redis will use TCP connection when unix_socket_path is None
# https://github.com/redis/redis-py/blob/d95d8a24ed2af3eae80b7b0f14cbccc9dbe86e96/redis/client.py#L1006
if instsocket is not None:
# connect with Unix socket
connector = swsscommon.DBConnector(dbid, instsocket, 0)
else:
# connect with TCP socket
port = swsscommon.SonicDBConfig.getDbPort(dbname);
connector = swsscommon.DBConnector(dbid, insthost, port, 0)
connector.flushdb()
except RuntimeError:
syslog.syslog(syslog.LOG_INFO,"flushdb:Redis Unix Socket connection error for path {} and dbaname {}".format(instsocket, dbname))