Skip to content

Commit 34b5819

Browse files
[MultiDB] refactor docker warm reboot codes (#799)
1 parent a078c42 commit 34b5819

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

sonic_installer/main.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,20 @@ def get_container_image_id_all(image_name):
343343
image_id_all = set(image_id_all)
344344
return image_id_all
345345

346+
def hget_warm_restart_table(db_name, table_name, warm_app_name, key):
347+
db = SonicV2Connector()
348+
db.connect(db_name, False)
349+
_hash = table_name + db.get_db_separator(db_name) + warm_app_name
350+
client = db.get_redis_client(db_name)
351+
return client.hget(_hash, key)
352+
353+
def hdel_warm_restart_table(db_name, table_name, warm_app_name, key):
354+
db = SonicV2Connector()
355+
db.connect(db_name, False)
356+
_hash = table_name + db.get_db_separator(db_name) + warm_app_name
357+
client = db.get_redis_client(db_name)
358+
return client.hdel(_hash, key)
359+
346360
# Main entrypoint
347361
@click.group()
348362
def cli():
@@ -622,8 +636,7 @@ def upgrade_docker(container_name, url, cleanup_image, skip_check, tag, warm):
622636

623637
# clean app reconcilation state from last warm start if exists
624638
for warm_app_name in warm_app_names:
625-
cmd = "docker exec -i database redis-cli -n 6 hdel 'WARM_RESTART_TABLE|" + warm_app_name + "' state"
626-
run_command(cmd)
639+
hdel_warm_restart_table("STATE_DB", "WARM_RESTART_TABLE", warm_app_name, "state")
627640

628641
run_command("docker kill %s > /dev/null" % container_name)
629642
run_command("docker rm %s " % container_name)
@@ -653,16 +666,14 @@ def upgrade_docker(container_name, url, cleanup_image, skip_check, tag, warm):
653666
count = 0
654667
for warm_app_name in warm_app_names:
655668
state = ""
656-
cmd = "docker exec -i database redis-cli -n 6 hget 'WARM_RESTART_TABLE|" + warm_app_name + "' state"
657669
# Wait up to 180 seconds for reconciled state
658670
while state != exp_state and count < 90:
659671
sys.stdout.write("\r {}: ".format(warm_app_name))
660672
sys.stdout.write("[%-s" % ('='*count))
661673
sys.stdout.flush()
662674
count += 1
663675
time.sleep(2)
664-
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
665-
state = proc.stdout.read().rstrip()
676+
state = hget_warm_restart_table("STATE_DB", "WARM_RESTART_TABLE", warm_app_name, "state")
666677
syslog.syslog("%s reached %s state"%(warm_app_name, state))
667678
sys.stdout.write("]\n\r")
668679
if state != exp_state:

0 commit comments

Comments
 (0)