@@ -343,6 +343,20 @@ def get_container_image_id_all(image_name):
343
343
image_id_all = set (image_id_all )
344
344
return image_id_all
345
345
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
+
346
360
# Main entrypoint
347
361
@click .group ()
348
362
def cli ():
@@ -622,8 +636,7 @@ def upgrade_docker(container_name, url, cleanup_image, skip_check, tag, warm):
622
636
623
637
# clean app reconcilation state from last warm start if exists
624
638
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" )
627
640
628
641
run_command ("docker kill %s > /dev/null" % container_name )
629
642
run_command ("docker rm %s " % container_name )
@@ -653,16 +666,14 @@ def upgrade_docker(container_name, url, cleanup_image, skip_check, tag, warm):
653
666
count = 0
654
667
for warm_app_name in warm_app_names :
655
668
state = ""
656
- cmd = "docker exec -i database redis-cli -n 6 hget 'WARM_RESTART_TABLE|" + warm_app_name + "' state"
657
669
# Wait up to 180 seconds for reconciled state
658
670
while state != exp_state and count < 90 :
659
671
sys .stdout .write ("\r {}: " .format (warm_app_name ))
660
672
sys .stdout .write ("[%-s" % ('=' * count ))
661
673
sys .stdout .flush ()
662
674
count += 1
663
675
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" )
666
677
syslog .syslog ("%s reached %s state" % (warm_app_name , state ))
667
678
sys .stdout .write ("]\n \r " )
668
679
if state != exp_state :
0 commit comments