From 25712c712e5d055bd7e71c7a7afa8ce86e1b380c Mon Sep 17 00:00:00 2001 From: Lawrence Lee Date: Sat, 1 May 2021 00:49:00 +0000 Subject: [PATCH] [mux]: Make write_standby available on host Signed-off-by: Lawrence Lee [write_standby]: Cleanup and fix build Signed-off-by: Lawrence Lee --- dockers/docker-mux/Dockerfile.j2 | 1 - dockers/docker-mux/supervisord.conf | 2 +- files/build_templates/docker_image_ctl.j2 | 3 +++ files/build_templates/mux.service.j2 | 1 + files/build_templates/sonic_debian_extension.j2 | 5 +++++ {dockers/docker-mux => files/scripts}/write_standby.py | 3 +-- 6 files changed, 11 insertions(+), 4 deletions(-) rename {dockers/docker-mux => files/scripts}/write_standby.py (98%) diff --git a/dockers/docker-mux/Dockerfile.j2 b/dockers/docker-mux/Dockerfile.j2 index fb6a3f9d71..66ec315f08 100755 --- a/dockers/docker-mux/Dockerfile.j2 +++ b/dockers/docker-mux/Dockerfile.j2 @@ -29,7 +29,6 @@ COPY ["docker-init.sh", "/usr/bin/"] COPY ["supervisord.conf", "/etc/supervisor/conf.d/"] COPY ["files/supervisor-proc-exit-listener", "/usr/bin"] COPY ["critical_processes", "/etc/supervisor/"] -COPY ["write_standby.py", "/usr/sbin/"] ## Copy all Jinja2 template files into the templates folder COPY ["*.j2", "/usr/share/sonic/templates/"] diff --git a/dockers/docker-mux/supervisord.conf b/dockers/docker-mux/supervisord.conf index 6e8e64dc66..7e5291bff5 100644 --- a/dockers/docker-mux/supervisord.conf +++ b/dockers/docker-mux/supervisord.conf @@ -28,7 +28,7 @@ stderr_logfile=syslog dependent_startup=true [program:standby_init] -command=/usr/sbin/write_standby.py +command=/opt/write_standby/bin/write_standby.py priority=2 autostart=false autorestart=false diff --git a/files/build_templates/docker_image_ctl.j2 b/files/build_templates/docker_image_ctl.j2 index d57fc546ac..63618df59c 100644 --- a/files/build_templates/docker_image_ctl.j2 +++ b/files/build_templates/docker_image_ctl.j2 @@ -389,6 +389,9 @@ start() { -v /var/run/redis-chassis:/var/run/redis-chassis:ro \ -v /usr/share/sonic/device/$PLATFORM/$HWSKU/$DEV:/usr/share/sonic/hwsku:ro \ {%- endif %} +{%- if docker_container_name == "mux" -%} + -v /opt/write_standby/bin:/opt/write_standby/bin:ro \ +{%- endif -%} $REDIS_MNT \ -v /usr/share/sonic/device/$PLATFORM:/usr/share/sonic/platform:ro \ {%- if sonic_asic_platform != "mellanox" %} diff --git a/files/build_templates/mux.service.j2 b/files/build_templates/mux.service.j2 index f7ae3725b8..7f671819f9 100644 --- a/files/build_templates/mux.service.j2 +++ b/files/build_templates/mux.service.j2 @@ -12,6 +12,7 @@ User={{ sonicadmin_user }} ExecStartPre=/usr/bin/{{docker_container_name}}.sh start ExecStart=/usr/bin/{{docker_container_name}}.sh wait ExecStop=/usr/bin/{{docker_container_name}}.sh stop +ExecStopPost=/opt/write_standby/bin/write_standby.py Restart=always RestartSec=30 diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 72fe14a6fc..adadbdbb31 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -48,6 +48,7 @@ FILESYSTEM_ROOT_USR_SHARE_SONIC_TEMPLATES="$FILESYSTEM_ROOT_USR_SHARE_SONIC/temp FILESYSTEM_ROOT_USR_SHARE_SONIC_FIRMWARE="$FILESYSTEM_ROOT_USR_SHARE_SONIC/firmware" FILESYSTEM_ROOT_ETC="$FILESYSTEM_ROOT/etc" FILESYSTEM_ROOT_ETC_SONIC="$FILESYSTEM_ROOT_ETC/sonic" +FILESYSTEM_ROOT_OPT="$FILESYSTEM_ROOT/opt" GENERATED_SERVICE_FILE="$FILESYSTEM_ROOT/etc/sonic/generated_services.conf" @@ -716,6 +717,10 @@ sudo LANG=C cp $SCRIPTS_DIR/radv.sh $FILESYSTEM_ROOT/usr/local/bin/radv.sh # Copy sonic-netns-exec script sudo LANG=C cp $SCRIPTS_DIR/sonic-netns-exec $FILESYSTEM_ROOT/usr/bin/sonic-netns-exec +# Copy write_standby script for mux state +sudo LANG=C mkdir -p $FILESYSTEM_ROOT_OPT/write_standby/bin/ +sudo LANG=C cp $SCRIPTS_DIR/write_standby.py $FILESYSTEM_ROOT_OPT/write_standby/bin/write_standby.py + # Copy systemd timer configuration # It implements delayed start of services sudo cp $BUILD_TEMPLATES/snmp.timer $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM diff --git a/dockers/docker-mux/write_standby.py b/files/scripts/write_standby.py similarity index 98% rename from dockers/docker-mux/write_standby.py rename to files/scripts/write_standby.py index 1a45fb5ed3..9fba67ac6a 100755 --- a/dockers/docker-mux/write_standby.py +++ b/files/scripts/write_standby.py @@ -1,10 +1,9 @@ #!/usr/bin/env python3 -import logging import time from swsscommon.swsscommon import ConfigDBConnector, DBConnector, FieldValuePairs, ProducerStateTable, SonicV2Connector -from swsscommon.swsscommon import APPL_DB, ASIC_DB +from swsscommon.swsscommon import APPL_DB logger = logging.getLogger(__name__)