From b90c8102c7c855ae6af784574f03ec4bbaa84493 Mon Sep 17 00:00:00 2001 From: Stepan Blyschak Date: Wed, 21 Oct 2020 23:20:06 +0300 Subject: [PATCH 01/12] [services] introduce sonic.target MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit admin@r-tigon-11:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 45cb06505f6a docker-sonic-telemetry:latest "/usr/bin/supervisord" About an hour ago Up 9 minutes telemetry afb299c49d4c docker-snmp:latest "/usr/bin/supervisord" About an hour ago Up 9 minutes snmp 5c75d20d71cf docker-sonic-mgmt-framework:latest "/usr/bin/supervisord" About an hour ago Up 9 minutes mgmt-framework 3e0563cd556f docker-router-advertiser:latest "/usr/bin/docker-ini…" About an hour ago Up 12 minutes radv 65f94b300db1 docker-platform-monitor:latest "/usr/bin/docker_ini…" About an hour ago Up About a minute pmon 4ffadb5817aa docker-dhcp-relay:latest "/usr/bin/docker_ini…" About an hour ago Up 12 minutes dhcp_relay 65058396277c docker-lldp:latest "/usr/bin/docker-lld…" About an hour ago Up 12 minutes lldp f922b7a26b06 docker-syncd-mlnx:latest "/usr/bin/supervisord" About an hour ago Up 12 minutes syncd 4f3aaddcacf9 docker-teamd:latest "/usr/bin/supervisord" About an hour ago Up 13 minutes teamd c3622c5322b2 docker-orchagent:latest "/usr/bin/docker-ini…" About an hour ago Up 13 minutes swss 370acc8b2289 docker-fpm-frr:latest "/usr/bin/docker_ini…" About an hour ago Up 13 minutes bgp 16f359ad4057 docker-database:latest "/usr/local/bin/dock…" About an hour ago Up 13 minutes database admin@r-tigon-11:~$ sudo systemctl stop sonic.target admin@r-tigon-11:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 16f359ad4057 docker-database:latest "/usr/local/bin/dock…" About an hour ago Up 14 minutes database admin@r-tigon-11:~$ sudo systemctl restart sonic.target admin@r-tigon-11:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 45cb06505f6a docker-sonic-telemetry:latest "/usr/bin/supervisord" About an hour ago Up 11 seconds telemetry afb299c49d4c docker-snmp:latest "/usr/bin/supervisord" About an hour ago Up 6 seconds snmp 5c75d20d71cf docker-sonic-mgmt-framework:latest "/usr/bin/supervisord" About an hour ago Up 8 seconds mgmt-framework 3e0563cd556f docker-router-advertiser:latest "/usr/bin/docker-ini…" About an hour ago Up 16 seconds radv 65f94b300db1 docker-platform-monitor:latest "/usr/bin/docker_ini…" About an hour ago Up 17 seconds pmon 4ffadb5817aa docker-dhcp-relay:latest "/usr/bin/docker_ini…" About an hour ago Up 17 seconds dhcp_relay 65058396277c docker-lldp:latest "/usr/bin/docker-lld…" About an hour ago Up 17 seconds lldp f922b7a26b06 docker-syncd-mlnx:latest "/usr/bin/supervisord" About an hour ago Up 18 seconds syncd 4f3aaddcacf9 docker-teamd:latest "/usr/bin/supervisord" About an hour ago Up About a minute teamd c3622c5322b2 docker-orchagent:latest "/usr/bin/docker-ini…" About an hour ago Up About a minute swss 370acc8b2289 docker-fpm-frr:latest "/usr/bin/docker_ini…" About an hour ago Up About a minute bgp 16f359ad4057 docker-database:latest "/usr/local/bin/dock…" About an hour ago Up 17 minutes database Signed-off-by: Stepan Blyschak --- files/build_templates/dhcp_relay.service.j2 | 4 +++- files/build_templates/gbsyncd.service.j2 | 4 +++- files/build_templates/iccpd.service.j2 | 4 +++- files/build_templates/mgmt-framework.service.j2 | 3 +++ files/build_templates/mgmt-framework.timer | 5 ++++- files/build_templates/nat.service.j2 | 4 +++- files/build_templates/per_namespace/bgp.service.j2 | 4 +++- files/build_templates/per_namespace/lldp.service.j2 | 6 +++++- files/build_templates/per_namespace/swss.service.j2 | 4 +++- files/build_templates/per_namespace/syncd.service.j2 | 4 +++- files/build_templates/per_namespace/teamd.service.j2 | 4 +++- files/build_templates/pmon.service.j2 | 4 +++- files/build_templates/radv.service.j2 | 4 +++- files/build_templates/restapi.service.j2 | 5 ++++- files/build_templates/sflow.service.j2 | 4 +++- files/build_templates/snmp.service.j2 | 2 ++ files/build_templates/sonic.target | 6 ++++++ files/build_templates/sonic_debian_extension.j2 | 3 +++ files/build_templates/telemetry.service.j2 | 3 +++ files/build_templates/telemetry.timer | 5 ++++- files/image_config/hostcfgd/hostcfgd.service | 5 ++++- files/image_config/hostname/hostname-config.service | 5 ++++- files/image_config/interfaces/interfaces-config.service | 5 ++++- files/image_config/ntp/ntp-config.service | 5 ++++- files/image_config/rsyslog/rsyslog-config.service | 5 ++++- 25 files changed, 87 insertions(+), 20 deletions(-) create mode 100644 files/build_templates/sonic.target diff --git a/files/build_templates/dhcp_relay.service.j2 b/files/build_templates/dhcp_relay.service.j2 index d501a663feb..b7b590a1036 100644 --- a/files/build_templates/dhcp_relay.service.j2 +++ b/files/build_templates/dhcp_relay.service.j2 @@ -2,6 +2,8 @@ Description=DHCP relay container Requires=updategraph.service After=updategraph.service swss.service syncd.service teamd.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -15,4 +17,4 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/gbsyncd.service.j2 b/files/build_templates/gbsyncd.service.j2 index e1080ae7d52..b33dfea6b00 100644 --- a/files/build_templates/gbsyncd.service.j2 +++ b/files/build_templates/gbsyncd.service.j2 @@ -5,6 +5,8 @@ ConditionPathExists=!/usr/share/sonic/hwsku/gearbox_config.json After=database.service updategraph.service After=interfaces-config.service After=swss.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service [Service] @@ -15,4 +17,4 @@ ExecStart=/usr/local/bin/gbsyncd.sh wait ExecStop=/usr/local/bin/gbsyncd.sh stop [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/iccpd.service.j2 b/files/build_templates/iccpd.service.j2 index 979c45de72c..d78407a87be 100644 --- a/files/build_templates/iccpd.service.j2 +++ b/files/build_templates/iccpd.service.j2 @@ -2,6 +2,8 @@ Description=ICCPD container Requires=updategraph.service swss.service After=updategraph.service swss.service +BindsTo=sonic.target +After=sonic.target [Service] User={{ sonicadmin_user }} @@ -10,4 +12,4 @@ ExecStart=/usr/bin/{{docker_container_name}}.sh wait ExecStop=/usr/bin/{{docker_container_name}}.sh stop [Install] -WantedBy=multi-user.target swss.service +WantedBy=sonic.target swss.service diff --git a/files/build_templates/mgmt-framework.service.j2 b/files/build_templates/mgmt-framework.service.j2 index 883711aa82e..dccbb53251e 100644 --- a/files/build_templates/mgmt-framework.service.j2 +++ b/files/build_templates/mgmt-framework.service.j2 @@ -2,6 +2,9 @@ Description=Management Framework container Requires=database.service After=database.service swss.service syncd.service +BindsTo=sonic.target +After=sonic.target +Conflicts=mgmt-framework.timer Before=ntp-config.service [Service] diff --git a/files/build_templates/mgmt-framework.timer b/files/build_templates/mgmt-framework.timer index 62ab8ef1bd5..9b51e5e7edd 100644 --- a/files/build_templates/mgmt-framework.timer +++ b/files/build_templates/mgmt-framework.timer @@ -1,9 +1,12 @@ [Unit] Description=Delays management framework container until SONiC has started +Conflicts=mgmt-framework.service [Timer] +OnUnitActiveSec=0 sec OnBootSec=3min 30 sec Unit=mgmt-framework.service [Install] -WantedBy=timers.target +WantedBy=timers.target sonic.target + diff --git a/files/build_templates/nat.service.j2 b/files/build_templates/nat.service.j2 index 1d267cfe930..10dc7cadf18 100644 --- a/files/build_templates/nat.service.j2 +++ b/files/build_templates/nat.service.j2 @@ -2,6 +2,8 @@ Description=NAT container Requires=updategraph.service After=updategraph.service swss.service syncd.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -15,5 +17,5 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/per_namespace/bgp.service.j2 b/files/build_templates/per_namespace/bgp.service.j2 index 9f3c72e20db..5ba49ffc441 100644 --- a/files/build_templates/per_namespace/bgp.service.j2 +++ b/files/build_templates/per_namespace/bgp.service.j2 @@ -4,6 +4,8 @@ Requires=database{% if multi_instance == 'true' %}@%i{% endif %}.service After=database{% if multi_instance == 'true' %}@%i{% endif %}.service Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -18,4 +20,4 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/per_namespace/lldp.service.j2 b/files/build_templates/per_namespace/lldp.service.j2 index b48675b0320..fca84462934 100644 --- a/files/build_templates/per_namespace/lldp.service.j2 +++ b/files/build_templates/per_namespace/lldp.service.j2 @@ -6,6 +6,10 @@ After=swss{% if multi_instance == 'true' %}@%i{% endif %}.service After=syncd{% if multi_instance == 'true' %}@%i{% endif %}.service Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -19,4 +23,4 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/per_namespace/swss.service.j2 b/files/build_templates/per_namespace/swss.service.j2 index 352d1593a60..9dd7b42c4d9 100644 --- a/files/build_templates/per_namespace/swss.service.j2 +++ b/files/build_templates/per_namespace/swss.service.j2 @@ -12,6 +12,8 @@ Requires=opennsl-modules.service Requires=updategraph.service After=updategraph.service After=interfaces-config.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -26,4 +28,4 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/per_namespace/syncd.service.j2 b/files/build_templates/per_namespace/syncd.service.j2 index 0c9bf073e94..1cccc469b17 100644 --- a/files/build_templates/per_namespace/syncd.service.j2 +++ b/files/build_templates/per_namespace/syncd.service.j2 @@ -17,6 +17,8 @@ After=nps-modules.service Requires=updategraph.service After=updategraph.service After=interfaces-config.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service [Service] @@ -30,4 +32,4 @@ TimeoutStartSec=150 {% endif %} [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/per_namespace/teamd.service.j2 b/files/build_templates/per_namespace/teamd.service.j2 index 092f9d2ebde..f019d32055c 100644 --- a/files/build_templates/per_namespace/teamd.service.j2 +++ b/files/build_templates/per_namespace/teamd.service.j2 @@ -3,6 +3,8 @@ Description=TEAMD container After=swss{% if multi_instance == 'true' %}@%i{% endif %}.service Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -16,4 +18,4 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/pmon.service.j2 b/files/build_templates/pmon.service.j2 index 9195b4d38ad..59d9e6c3319 100644 --- a/files/build_templates/pmon.service.j2 +++ b/files/build_templates/pmon.service.j2 @@ -5,6 +5,8 @@ After=database.service updategraph.service {% if sonic_asic_platform == 'mellanox' %} After=syncd.service {% endif %} +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -18,4 +20,4 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/radv.service.j2 b/files/build_templates/radv.service.j2 index 5cf25a21046..0427b7e6050 100644 --- a/files/build_templates/radv.service.j2 +++ b/files/build_templates/radv.service.j2 @@ -3,6 +3,8 @@ Description=Router advertiser container Requires=updategraph.service After=updategraph.service swss.service syncd.service Before=ntp-config.service +BindsTo=sonic.target +After=sonic.target StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -15,4 +17,4 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/restapi.service.j2 b/files/build_templates/restapi.service.j2 index df1a50eb56c..35df3c43e9c 100644 --- a/files/build_templates/restapi.service.j2 +++ b/files/build_templates/restapi.service.j2 @@ -2,6 +2,8 @@ Description=RestAPI container Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service [Service] @@ -13,4 +15,5 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target \ No newline at end of file +WantedBy=sonic.target + diff --git a/files/build_templates/sflow.service.j2 b/files/build_templates/sflow.service.j2 index 643bf646964..82983d87390 100644 --- a/files/build_templates/sflow.service.j2 +++ b/files/build_templates/sflow.service.j2 @@ -2,6 +2,8 @@ Description=sFlow container Requisite=swss.service After=swss.service syncd.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -15,4 +17,4 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/snmp.service.j2 b/files/build_templates/snmp.service.j2 index 4997ab737e3..b10e67999b9 100644 --- a/files/build_templates/snmp.service.j2 +++ b/files/build_templates/snmp.service.j2 @@ -3,6 +3,8 @@ Description=SNMP container Requires=updategraph.service Requisite=swss.service After=updategraph.service swss.service syncd.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service Conflicts=snmp.timer StartLimitIntervalSec=1200 diff --git a/files/build_templates/sonic.target b/files/build_templates/sonic.target new file mode 100644 index 00000000000..ee1eb663ee3 --- /dev/null +++ b/files/build_templates/sonic.target @@ -0,0 +1,6 @@ +[Unit] +Description=SONiC services target. + +[Install] +WantedBy=multi-user.target + diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 21f143e7010..68a70d667d8 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -579,6 +579,9 @@ sudo cp $BUILD_TEMPLATES/mgmt-framework.timer $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_S echo "mgmt-framework.timer" | sudo tee -a $GENERATED_SERVICE_FILE {% endif %} +sudo cp $BUILD_TEMPLATES/sonic.target $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM +sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable sonic.target + sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y python-dev python3-dev sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y build-essential libssl-dev swig sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get clean -y diff --git a/files/build_templates/telemetry.service.j2 b/files/build_templates/telemetry.service.j2 index 43fa039156d..511e23f7dae 100644 --- a/files/build_templates/telemetry.service.j2 +++ b/files/build_templates/telemetry.service.j2 @@ -3,6 +3,9 @@ Description=Telemetry container Requires=database.service After=database.service swss.service syncd.service Before=ntp-config.service +BindsTo=sonic.target +After=sonic.target +Conflicts=telemetry.timer StartLimitIntervalSec=1200 StartLimitBurst=3 diff --git a/files/build_templates/telemetry.timer b/files/build_templates/telemetry.timer index e08f1c09eac..0ab50710b46 100644 --- a/files/build_templates/telemetry.timer +++ b/files/build_templates/telemetry.timer @@ -1,9 +1,12 @@ [Unit] Description=Delays telemetry container until SONiC has started +Conflicts=telemetry.service [Timer] +OnUnitActiveSec=0 sec OnBootSec=3min 30 sec Unit=telemetry.service [Install] -WantedBy=timers.target +WantedBy=timers.target sonic.target + diff --git a/files/image_config/hostcfgd/hostcfgd.service b/files/image_config/hostcfgd/hostcfgd.service index 762786ad830..42d607e6784 100644 --- a/files/image_config/hostcfgd/hostcfgd.service +++ b/files/image_config/hostcfgd/hostcfgd.service @@ -2,10 +2,13 @@ Description=Host config enforcer daemon Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target [Service] Type=simple ExecStart=/usr/bin/hostcfgd [Install] -WantedBy=multi-user.target +WantedBy=sonic.target + diff --git a/files/image_config/hostname/hostname-config.service b/files/image_config/hostname/hostname-config.service index c23ae10227a..f82021cf323 100644 --- a/files/image_config/hostname/hostname-config.service +++ b/files/image_config/hostname/hostname-config.service @@ -2,10 +2,13 @@ Description=Update hostname based on configdb Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target [Service] Type=oneshot ExecStart=/usr/bin/hostname-config.sh [Install] -WantedBy=multi-user.target +WantedBy=sonic.target + diff --git a/files/image_config/interfaces/interfaces-config.service b/files/image_config/interfaces/interfaces-config.service index 71178affdee..917686dc8dd 100644 --- a/files/image_config/interfaces/interfaces-config.service +++ b/files/image_config/interfaces/interfaces-config.service @@ -2,10 +2,13 @@ Description=Update interfaces configuration Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target [Service] Type=oneshot ExecStart=/usr/bin/interfaces-config.sh [Install] -WantedBy=multi-user.target +WantedBy=sonic.target + diff --git a/files/image_config/ntp/ntp-config.service b/files/image_config/ntp/ntp-config.service index c86710e3d20..4539b574d09 100644 --- a/files/image_config/ntp/ntp-config.service +++ b/files/image_config/ntp/ntp-config.service @@ -2,10 +2,13 @@ Description=Update NTP configuration Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target [Service] Type=oneshot ExecStart=/usr/bin/ntp-config.sh [Install] -WantedBy=multi-user.target +WantedBy=sonic.target + diff --git a/files/image_config/rsyslog/rsyslog-config.service b/files/image_config/rsyslog/rsyslog-config.service index ee62a36ccf2..875660c9f89 100644 --- a/files/image_config/rsyslog/rsyslog-config.service +++ b/files/image_config/rsyslog/rsyslog-config.service @@ -2,10 +2,13 @@ Description=Update rsyslog configuration Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target [Service] Type=oneshot ExecStart=/usr/bin/rsyslog-config.sh [Install] -WantedBy=multi-user.target +WantedBy=sonic.target + From 80302458f0819593e93a6e67a53fce2654b87f9c Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Mon, 26 Oct 2020 04:33:46 +0200 Subject: [PATCH 02/12] [timers] Fix timer units. 'Conficts=' in timer units caused a problem when starting a timer causes restart of a service. Instead, 'PartOf=' is a better choice. 'PartOf=' will make the timer stop and restart togather with the service the timer is bound to, otherwise the timer OnUnitActiveSec expires imidiatelly when the service stops and starts it. Signed-off-by: Stepan Blyshchak --- files/build_templates/mgmt-framework.service.j2 | 2 -- files/build_templates/mgmt-framework.timer | 3 +-- files/build_templates/snmp.service.j2 | 1 - files/build_templates/snmp.timer | 2 +- files/build_templates/telemetry.service.j2 | 2 -- files/build_templates/telemetry.timer | 3 +-- 6 files changed, 3 insertions(+), 10 deletions(-) diff --git a/files/build_templates/mgmt-framework.service.j2 b/files/build_templates/mgmt-framework.service.j2 index dccbb53251e..1eb983a897f 100644 --- a/files/build_templates/mgmt-framework.service.j2 +++ b/files/build_templates/mgmt-framework.service.j2 @@ -4,7 +4,6 @@ Requires=database.service After=database.service swss.service syncd.service BindsTo=sonic.target After=sonic.target -Conflicts=mgmt-framework.timer Before=ntp-config.service [Service] @@ -12,4 +11,3 @@ 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 - diff --git a/files/build_templates/mgmt-framework.timer b/files/build_templates/mgmt-framework.timer index 9b51e5e7edd..37389fbc6db 100644 --- a/files/build_templates/mgmt-framework.timer +++ b/files/build_templates/mgmt-framework.timer @@ -1,6 +1,6 @@ [Unit] Description=Delays management framework container until SONiC has started -Conflicts=mgmt-framework.service +PartOf=mgmt-framework.service [Timer] OnUnitActiveSec=0 sec @@ -9,4 +9,3 @@ Unit=mgmt-framework.service [Install] WantedBy=timers.target sonic.target - diff --git a/files/build_templates/snmp.service.j2 b/files/build_templates/snmp.service.j2 index b10e67999b9..5c9dfa24ce9 100644 --- a/files/build_templates/snmp.service.j2 +++ b/files/build_templates/snmp.service.j2 @@ -6,7 +6,6 @@ After=updategraph.service swss.service syncd.service BindsTo=sonic.target After=sonic.target Before=ntp-config.service -Conflicts=snmp.timer StartLimitIntervalSec=1200 StartLimitBurst=3 diff --git a/files/build_templates/snmp.timer b/files/build_templates/snmp.timer index 6d1838554d0..e31fc3980be 100644 --- a/files/build_templates/snmp.timer +++ b/files/build_templates/snmp.timer @@ -1,6 +1,6 @@ [Unit] Description=Delays snmp container until SONiC has started -Conflicts=snmp.service +PartOf=snmp.service [Timer] OnUnitActiveSec=0 sec diff --git a/files/build_templates/telemetry.service.j2 b/files/build_templates/telemetry.service.j2 index 511e23f7dae..aa02e75ac07 100644 --- a/files/build_templates/telemetry.service.j2 +++ b/files/build_templates/telemetry.service.j2 @@ -5,7 +5,6 @@ After=database.service swss.service syncd.service Before=ntp-config.service BindsTo=sonic.target After=sonic.target -Conflicts=telemetry.timer StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -16,4 +15,3 @@ ExecStart=/usr/bin/{{docker_container_name}}.sh wait ExecStop=/usr/bin/{{docker_container_name}}.sh stop Restart=always RestartSec=30 - diff --git a/files/build_templates/telemetry.timer b/files/build_templates/telemetry.timer index 0ab50710b46..4a605b8c50c 100644 --- a/files/build_templates/telemetry.timer +++ b/files/build_templates/telemetry.timer @@ -1,6 +1,6 @@ [Unit] Description=Delays telemetry container until SONiC has started -Conflicts=telemetry.service +PartOf=telemetry.service [Timer] OnUnitActiveSec=0 sec @@ -9,4 +9,3 @@ Unit=telemetry.service [Install] WantedBy=timers.target sonic.target - From 831aa672fb6365276c39d3d5b28c29778bcf6281 Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Mon, 26 Oct 2020 04:41:35 +0200 Subject: [PATCH 03/12] [services] make oneshot services RemainAfterExit=yes. To prevent restarts on 'systemctl start '. Signed-off-by: Stepan Blyshchak --- files/image_config/hostname/hostname-config.service | 2 +- files/image_config/interfaces/interfaces-config.service | 2 +- files/image_config/ntp/ntp-config.service | 2 +- files/image_config/rsyslog/rsyslog-config.service | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/files/image_config/hostname/hostname-config.service b/files/image_config/hostname/hostname-config.service index f82021cf323..c82c2d0bf54 100644 --- a/files/image_config/hostname/hostname-config.service +++ b/files/image_config/hostname/hostname-config.service @@ -7,8 +7,8 @@ After=sonic.target [Service] Type=oneshot +RemainAfterExit=yes ExecStart=/usr/bin/hostname-config.sh [Install] WantedBy=sonic.target - diff --git a/files/image_config/interfaces/interfaces-config.service b/files/image_config/interfaces/interfaces-config.service index 917686dc8dd..a3f71576461 100644 --- a/files/image_config/interfaces/interfaces-config.service +++ b/files/image_config/interfaces/interfaces-config.service @@ -7,8 +7,8 @@ After=sonic.target [Service] Type=oneshot +RemainAfterExit=yes ExecStart=/usr/bin/interfaces-config.sh [Install] WantedBy=sonic.target - diff --git a/files/image_config/ntp/ntp-config.service b/files/image_config/ntp/ntp-config.service index 4539b574d09..d6dd85f60b8 100644 --- a/files/image_config/ntp/ntp-config.service +++ b/files/image_config/ntp/ntp-config.service @@ -7,8 +7,8 @@ After=sonic.target [Service] Type=oneshot +RemainAfterExit=yes ExecStart=/usr/bin/ntp-config.sh [Install] WantedBy=sonic.target - diff --git a/files/image_config/rsyslog/rsyslog-config.service b/files/image_config/rsyslog/rsyslog-config.service index 875660c9f89..34c56fb0e00 100644 --- a/files/image_config/rsyslog/rsyslog-config.service +++ b/files/image_config/rsyslog/rsyslog-config.service @@ -7,8 +7,8 @@ After=sonic.target [Service] Type=oneshot +RemainAfterExit=yes ExecStart=/usr/bin/rsyslog-config.sh [Install] WantedBy=sonic.target - From 58a8f3ba9f4feb6058267e944b7a3caa8a8144a5 Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Mon, 26 Oct 2020 04:44:17 +0200 Subject: [PATCH 04/12] [services] remove redundant new-lines Signed-off-by: Stepan Blyshchak --- files/build_templates/restapi.service.j2 | 1 - files/build_templates/snmp.service.j2 | 1 - files/build_templates/sonic.target | 1 - 3 files changed, 3 deletions(-) diff --git a/files/build_templates/restapi.service.j2 b/files/build_templates/restapi.service.j2 index 35df3c43e9c..edc18167e93 100644 --- a/files/build_templates/restapi.service.j2 +++ b/files/build_templates/restapi.service.j2 @@ -16,4 +16,3 @@ RestartSec=30 [Install] WantedBy=sonic.target - diff --git a/files/build_templates/snmp.service.j2 b/files/build_templates/snmp.service.j2 index 5c9dfa24ce9..a510aac5571 100644 --- a/files/build_templates/snmp.service.j2 +++ b/files/build_templates/snmp.service.j2 @@ -15,4 +15,3 @@ ExecStart=/usr/bin/{{docker_container_name}}.sh wait ExecStop=/usr/bin/{{docker_container_name}}.sh stop Restart=always RestartSec=30 - diff --git a/files/build_templates/sonic.target b/files/build_templates/sonic.target index ee1eb663ee3..4070e21a080 100644 --- a/files/build_templates/sonic.target +++ b/files/build_templates/sonic.target @@ -3,4 +3,3 @@ Description=SONiC services target. [Install] WantedBy=multi-user.target - From 560e502078836fb0ad160157191704d22e6b8831 Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Mon, 26 Oct 2020 04:46:05 +0200 Subject: [PATCH 05/12] [services] add procdockerstatsd to sonic.target Signed-off-by: Stepan Blyshchak --- files/image_config/procdockerstatsd/procdockerstatsd.service | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/files/image_config/procdockerstatsd/procdockerstatsd.service b/files/image_config/procdockerstatsd/procdockerstatsd.service index 010dac15b2e..5e3deab9f4e 100644 --- a/files/image_config/procdockerstatsd/procdockerstatsd.service +++ b/files/image_config/procdockerstatsd/procdockerstatsd.service @@ -2,6 +2,8 @@ Description=Process and docker CPU/memory utilization data export daemon Requires=database.service updategraph.service After=database.service updategraph.service +BindsTo=sonic.target +After=sonic.target [Service] Type=simple @@ -9,5 +11,4 @@ ExecStart=/usr/bin/procdockerstatsd Restart=always [Install] -WantedBy=multi-user.target - +WantedBy=sonic.target From a51dcbb5851c6c3e41ee373f8343bf54870b95f1 Mon Sep 17 00:00:00 2001 From: Stepan Blyschak Date: Wed, 21 Oct 2020 23:20:06 +0300 Subject: [PATCH 06/12] [services] introduce sonic.target MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit admin@r-tigon-11:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 45cb06505f6a docker-sonic-telemetry:latest "/usr/bin/supervisord" About an hour ago Up 9 minutes telemetry afb299c49d4c docker-snmp:latest "/usr/bin/supervisord" About an hour ago Up 9 minutes snmp 5c75d20d71cf docker-sonic-mgmt-framework:latest "/usr/bin/supervisord" About an hour ago Up 9 minutes mgmt-framework 3e0563cd556f docker-router-advertiser:latest "/usr/bin/docker-ini…" About an hour ago Up 12 minutes radv 65f94b300db1 docker-platform-monitor:latest "/usr/bin/docker_ini…" About an hour ago Up About a minute pmon 4ffadb5817aa docker-dhcp-relay:latest "/usr/bin/docker_ini…" About an hour ago Up 12 minutes dhcp_relay 65058396277c docker-lldp:latest "/usr/bin/docker-lld…" About an hour ago Up 12 minutes lldp f922b7a26b06 docker-syncd-mlnx:latest "/usr/bin/supervisord" About an hour ago Up 12 minutes syncd 4f3aaddcacf9 docker-teamd:latest "/usr/bin/supervisord" About an hour ago Up 13 minutes teamd c3622c5322b2 docker-orchagent:latest "/usr/bin/docker-ini…" About an hour ago Up 13 minutes swss 370acc8b2289 docker-fpm-frr:latest "/usr/bin/docker_ini…" About an hour ago Up 13 minutes bgp 16f359ad4057 docker-database:latest "/usr/local/bin/dock…" About an hour ago Up 13 minutes database admin@r-tigon-11:~$ sudo systemctl stop sonic.target admin@r-tigon-11:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 16f359ad4057 docker-database:latest "/usr/local/bin/dock…" About an hour ago Up 14 minutes database admin@r-tigon-11:~$ sudo systemctl restart sonic.target admin@r-tigon-11:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 45cb06505f6a docker-sonic-telemetry:latest "/usr/bin/supervisord" About an hour ago Up 11 seconds telemetry afb299c49d4c docker-snmp:latest "/usr/bin/supervisord" About an hour ago Up 6 seconds snmp 5c75d20d71cf docker-sonic-mgmt-framework:latest "/usr/bin/supervisord" About an hour ago Up 8 seconds mgmt-framework 3e0563cd556f docker-router-advertiser:latest "/usr/bin/docker-ini…" About an hour ago Up 16 seconds radv 65f94b300db1 docker-platform-monitor:latest "/usr/bin/docker_ini…" About an hour ago Up 17 seconds pmon 4ffadb5817aa docker-dhcp-relay:latest "/usr/bin/docker_ini…" About an hour ago Up 17 seconds dhcp_relay 65058396277c docker-lldp:latest "/usr/bin/docker-lld…" About an hour ago Up 17 seconds lldp f922b7a26b06 docker-syncd-mlnx:latest "/usr/bin/supervisord" About an hour ago Up 18 seconds syncd 4f3aaddcacf9 docker-teamd:latest "/usr/bin/supervisord" About an hour ago Up About a minute teamd c3622c5322b2 docker-orchagent:latest "/usr/bin/docker-ini…" About an hour ago Up About a minute swss 370acc8b2289 docker-fpm-frr:latest "/usr/bin/docker_ini…" About an hour ago Up About a minute bgp 16f359ad4057 docker-database:latest "/usr/local/bin/dock…" About an hour ago Up 17 minutes database Signed-off-by: Stepan Blyschak --- files/build_templates/dhcp_relay.service.j2 | 4 +++- files/build_templates/gbsyncd.service.j2 | 4 +++- files/build_templates/iccpd.service.j2 | 4 +++- files/build_templates/mgmt-framework.service.j2 | 3 +++ files/build_templates/mgmt-framework.timer | 5 ++++- files/build_templates/nat.service.j2 | 4 +++- files/build_templates/per_namespace/bgp.service.j2 | 4 +++- files/build_templates/per_namespace/lldp.service.j2 | 6 +++++- files/build_templates/per_namespace/swss.service.j2 | 4 +++- files/build_templates/per_namespace/syncd.service.j2 | 4 +++- files/build_templates/per_namespace/teamd.service.j2 | 4 +++- files/build_templates/pmon.service.j2 | 4 +++- files/build_templates/radv.service.j2 | 4 +++- files/build_templates/restapi.service.j2 | 5 ++++- files/build_templates/sflow.service.j2 | 4 +++- files/build_templates/snmp.service.j2 | 2 ++ files/build_templates/sonic.target | 6 ++++++ files/build_templates/sonic_debian_extension.j2 | 3 +++ files/build_templates/telemetry.service.j2 | 3 +++ files/build_templates/telemetry.timer | 5 ++++- files/image_config/hostcfgd/hostcfgd.service | 5 ++++- files/image_config/hostname/hostname-config.service | 5 ++++- files/image_config/interfaces/interfaces-config.service | 5 ++++- files/image_config/ntp/ntp-config.service | 5 ++++- files/image_config/rsyslog/rsyslog-config.service | 5 ++++- 25 files changed, 87 insertions(+), 20 deletions(-) create mode 100644 files/build_templates/sonic.target diff --git a/files/build_templates/dhcp_relay.service.j2 b/files/build_templates/dhcp_relay.service.j2 index d501a663feb..b7b590a1036 100644 --- a/files/build_templates/dhcp_relay.service.j2 +++ b/files/build_templates/dhcp_relay.service.j2 @@ -2,6 +2,8 @@ Description=DHCP relay container Requires=updategraph.service After=updategraph.service swss.service syncd.service teamd.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -15,4 +17,4 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/gbsyncd.service.j2 b/files/build_templates/gbsyncd.service.j2 index e1080ae7d52..b33dfea6b00 100644 --- a/files/build_templates/gbsyncd.service.j2 +++ b/files/build_templates/gbsyncd.service.j2 @@ -5,6 +5,8 @@ ConditionPathExists=!/usr/share/sonic/hwsku/gearbox_config.json After=database.service updategraph.service After=interfaces-config.service After=swss.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service [Service] @@ -15,4 +17,4 @@ ExecStart=/usr/local/bin/gbsyncd.sh wait ExecStop=/usr/local/bin/gbsyncd.sh stop [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/iccpd.service.j2 b/files/build_templates/iccpd.service.j2 index 979c45de72c..d78407a87be 100644 --- a/files/build_templates/iccpd.service.j2 +++ b/files/build_templates/iccpd.service.j2 @@ -2,6 +2,8 @@ Description=ICCPD container Requires=updategraph.service swss.service After=updategraph.service swss.service +BindsTo=sonic.target +After=sonic.target [Service] User={{ sonicadmin_user }} @@ -10,4 +12,4 @@ ExecStart=/usr/bin/{{docker_container_name}}.sh wait ExecStop=/usr/bin/{{docker_container_name}}.sh stop [Install] -WantedBy=multi-user.target swss.service +WantedBy=sonic.target swss.service diff --git a/files/build_templates/mgmt-framework.service.j2 b/files/build_templates/mgmt-framework.service.j2 index 883711aa82e..dccbb53251e 100644 --- a/files/build_templates/mgmt-framework.service.j2 +++ b/files/build_templates/mgmt-framework.service.j2 @@ -2,6 +2,9 @@ Description=Management Framework container Requires=database.service After=database.service swss.service syncd.service +BindsTo=sonic.target +After=sonic.target +Conflicts=mgmt-framework.timer Before=ntp-config.service [Service] diff --git a/files/build_templates/mgmt-framework.timer b/files/build_templates/mgmt-framework.timer index 62ab8ef1bd5..9b51e5e7edd 100644 --- a/files/build_templates/mgmt-framework.timer +++ b/files/build_templates/mgmt-framework.timer @@ -1,9 +1,12 @@ [Unit] Description=Delays management framework container until SONiC has started +Conflicts=mgmt-framework.service [Timer] +OnUnitActiveSec=0 sec OnBootSec=3min 30 sec Unit=mgmt-framework.service [Install] -WantedBy=timers.target +WantedBy=timers.target sonic.target + diff --git a/files/build_templates/nat.service.j2 b/files/build_templates/nat.service.j2 index 1d267cfe930..10dc7cadf18 100644 --- a/files/build_templates/nat.service.j2 +++ b/files/build_templates/nat.service.j2 @@ -2,6 +2,8 @@ Description=NAT container Requires=updategraph.service After=updategraph.service swss.service syncd.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -15,5 +17,5 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/per_namespace/bgp.service.j2 b/files/build_templates/per_namespace/bgp.service.j2 index 9f3c72e20db..5ba49ffc441 100644 --- a/files/build_templates/per_namespace/bgp.service.j2 +++ b/files/build_templates/per_namespace/bgp.service.j2 @@ -4,6 +4,8 @@ Requires=database{% if multi_instance == 'true' %}@%i{% endif %}.service After=database{% if multi_instance == 'true' %}@%i{% endif %}.service Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -18,4 +20,4 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/per_namespace/lldp.service.j2 b/files/build_templates/per_namespace/lldp.service.j2 index b48675b0320..fca84462934 100644 --- a/files/build_templates/per_namespace/lldp.service.j2 +++ b/files/build_templates/per_namespace/lldp.service.j2 @@ -6,6 +6,10 @@ After=swss{% if multi_instance == 'true' %}@%i{% endif %}.service After=syncd{% if multi_instance == 'true' %}@%i{% endif %}.service Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -19,4 +23,4 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/per_namespace/swss.service.j2 b/files/build_templates/per_namespace/swss.service.j2 index 352d1593a60..9dd7b42c4d9 100644 --- a/files/build_templates/per_namespace/swss.service.j2 +++ b/files/build_templates/per_namespace/swss.service.j2 @@ -12,6 +12,8 @@ Requires=opennsl-modules.service Requires=updategraph.service After=updategraph.service After=interfaces-config.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -26,4 +28,4 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/per_namespace/syncd.service.j2 b/files/build_templates/per_namespace/syncd.service.j2 index 0c9bf073e94..1cccc469b17 100644 --- a/files/build_templates/per_namespace/syncd.service.j2 +++ b/files/build_templates/per_namespace/syncd.service.j2 @@ -17,6 +17,8 @@ After=nps-modules.service Requires=updategraph.service After=updategraph.service After=interfaces-config.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service [Service] @@ -30,4 +32,4 @@ TimeoutStartSec=150 {% endif %} [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/per_namespace/teamd.service.j2 b/files/build_templates/per_namespace/teamd.service.j2 index 092f9d2ebde..f019d32055c 100644 --- a/files/build_templates/per_namespace/teamd.service.j2 +++ b/files/build_templates/per_namespace/teamd.service.j2 @@ -3,6 +3,8 @@ Description=TEAMD container After=swss{% if multi_instance == 'true' %}@%i{% endif %}.service Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -16,4 +18,4 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/pmon.service.j2 b/files/build_templates/pmon.service.j2 index 9195b4d38ad..59d9e6c3319 100644 --- a/files/build_templates/pmon.service.j2 +++ b/files/build_templates/pmon.service.j2 @@ -5,6 +5,8 @@ After=database.service updategraph.service {% if sonic_asic_platform == 'mellanox' %} After=syncd.service {% endif %} +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -18,4 +20,4 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/radv.service.j2 b/files/build_templates/radv.service.j2 index 5cf25a21046..0427b7e6050 100644 --- a/files/build_templates/radv.service.j2 +++ b/files/build_templates/radv.service.j2 @@ -3,6 +3,8 @@ Description=Router advertiser container Requires=updategraph.service After=updategraph.service swss.service syncd.service Before=ntp-config.service +BindsTo=sonic.target +After=sonic.target StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -15,4 +17,4 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/restapi.service.j2 b/files/build_templates/restapi.service.j2 index df1a50eb56c..35df3c43e9c 100644 --- a/files/build_templates/restapi.service.j2 +++ b/files/build_templates/restapi.service.j2 @@ -2,6 +2,8 @@ Description=RestAPI container Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service [Service] @@ -13,4 +15,5 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target \ No newline at end of file +WantedBy=sonic.target + diff --git a/files/build_templates/sflow.service.j2 b/files/build_templates/sflow.service.j2 index 643bf646964..82983d87390 100644 --- a/files/build_templates/sflow.service.j2 +++ b/files/build_templates/sflow.service.j2 @@ -2,6 +2,8 @@ Description=sFlow container Requisite=swss.service After=swss.service syncd.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -15,4 +17,4 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target diff --git a/files/build_templates/snmp.service.j2 b/files/build_templates/snmp.service.j2 index 4997ab737e3..b10e67999b9 100644 --- a/files/build_templates/snmp.service.j2 +++ b/files/build_templates/snmp.service.j2 @@ -3,6 +3,8 @@ Description=SNMP container Requires=updategraph.service Requisite=swss.service After=updategraph.service swss.service syncd.service +BindsTo=sonic.target +After=sonic.target Before=ntp-config.service Conflicts=snmp.timer StartLimitIntervalSec=1200 diff --git a/files/build_templates/sonic.target b/files/build_templates/sonic.target new file mode 100644 index 00000000000..ee1eb663ee3 --- /dev/null +++ b/files/build_templates/sonic.target @@ -0,0 +1,6 @@ +[Unit] +Description=SONiC services target. + +[Install] +WantedBy=multi-user.target + diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2 index 70b8b08a99c..caf9c575543 100644 --- a/files/build_templates/sonic_debian_extension.j2 +++ b/files/build_templates/sonic_debian_extension.j2 @@ -584,6 +584,9 @@ sudo cp $BUILD_TEMPLATES/mgmt-framework.timer $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_S echo "mgmt-framework.timer" | sudo tee -a $GENERATED_SERVICE_FILE {% endif %} +sudo cp $BUILD_TEMPLATES/sonic.target $FILESYSTEM_ROOT_USR_LIB_SYSTEMD_SYSTEM +sudo LANG=C chroot $FILESYSTEM_ROOT systemctl enable sonic.target + sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y python-dev python3-dev sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get purge -y build-essential libssl-dev swig sudo LANG=C DEBIAN_FRONTEND=noninteractive chroot $FILESYSTEM_ROOT apt-get clean -y diff --git a/files/build_templates/telemetry.service.j2 b/files/build_templates/telemetry.service.j2 index 43fa039156d..511e23f7dae 100644 --- a/files/build_templates/telemetry.service.j2 +++ b/files/build_templates/telemetry.service.j2 @@ -3,6 +3,9 @@ Description=Telemetry container Requires=database.service After=database.service swss.service syncd.service Before=ntp-config.service +BindsTo=sonic.target +After=sonic.target +Conflicts=telemetry.timer StartLimitIntervalSec=1200 StartLimitBurst=3 diff --git a/files/build_templates/telemetry.timer b/files/build_templates/telemetry.timer index e08f1c09eac..0ab50710b46 100644 --- a/files/build_templates/telemetry.timer +++ b/files/build_templates/telemetry.timer @@ -1,9 +1,12 @@ [Unit] Description=Delays telemetry container until SONiC has started +Conflicts=telemetry.service [Timer] +OnUnitActiveSec=0 sec OnBootSec=3min 30 sec Unit=telemetry.service [Install] -WantedBy=timers.target +WantedBy=timers.target sonic.target + diff --git a/files/image_config/hostcfgd/hostcfgd.service b/files/image_config/hostcfgd/hostcfgd.service index 762786ad830..42d607e6784 100644 --- a/files/image_config/hostcfgd/hostcfgd.service +++ b/files/image_config/hostcfgd/hostcfgd.service @@ -2,10 +2,13 @@ Description=Host config enforcer daemon Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target [Service] Type=simple ExecStart=/usr/bin/hostcfgd [Install] -WantedBy=multi-user.target +WantedBy=sonic.target + diff --git a/files/image_config/hostname/hostname-config.service b/files/image_config/hostname/hostname-config.service index c23ae10227a..f82021cf323 100644 --- a/files/image_config/hostname/hostname-config.service +++ b/files/image_config/hostname/hostname-config.service @@ -2,10 +2,13 @@ Description=Update hostname based on configdb Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target [Service] Type=oneshot ExecStart=/usr/bin/hostname-config.sh [Install] -WantedBy=multi-user.target +WantedBy=sonic.target + diff --git a/files/image_config/interfaces/interfaces-config.service b/files/image_config/interfaces/interfaces-config.service index 71178affdee..917686dc8dd 100644 --- a/files/image_config/interfaces/interfaces-config.service +++ b/files/image_config/interfaces/interfaces-config.service @@ -2,10 +2,13 @@ Description=Update interfaces configuration Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target [Service] Type=oneshot ExecStart=/usr/bin/interfaces-config.sh [Install] -WantedBy=multi-user.target +WantedBy=sonic.target + diff --git a/files/image_config/ntp/ntp-config.service b/files/image_config/ntp/ntp-config.service index c86710e3d20..4539b574d09 100644 --- a/files/image_config/ntp/ntp-config.service +++ b/files/image_config/ntp/ntp-config.service @@ -2,10 +2,13 @@ Description=Update NTP configuration Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target [Service] Type=oneshot ExecStart=/usr/bin/ntp-config.sh [Install] -WantedBy=multi-user.target +WantedBy=sonic.target + diff --git a/files/image_config/rsyslog/rsyslog-config.service b/files/image_config/rsyslog/rsyslog-config.service index ee62a36ccf2..875660c9f89 100644 --- a/files/image_config/rsyslog/rsyslog-config.service +++ b/files/image_config/rsyslog/rsyslog-config.service @@ -2,10 +2,13 @@ Description=Update rsyslog configuration Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target [Service] Type=oneshot ExecStart=/usr/bin/rsyslog-config.sh [Install] -WantedBy=multi-user.target +WantedBy=sonic.target + From fb36b16fc0470103792f975c3a39c6f27a6bbd05 Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Mon, 26 Oct 2020 04:33:46 +0200 Subject: [PATCH 07/12] [timers] Fix timer units. 'Conficts=' in timer units caused a problem when starting a timer causes restart of a service. Instead, 'PartOf=' is a better choice. 'PartOf=' will make the timer stop and restart togather with the service the timer is bound to, otherwise the timer OnUnitActiveSec expires imidiatelly when the service stops and starts it. Signed-off-by: Stepan Blyshchak --- files/build_templates/mgmt-framework.service.j2 | 2 -- files/build_templates/mgmt-framework.timer | 3 +-- files/build_templates/snmp.service.j2 | 1 - files/build_templates/snmp.timer | 2 +- files/build_templates/telemetry.service.j2 | 2 -- files/build_templates/telemetry.timer | 3 +-- 6 files changed, 3 insertions(+), 10 deletions(-) diff --git a/files/build_templates/mgmt-framework.service.j2 b/files/build_templates/mgmt-framework.service.j2 index dccbb53251e..1eb983a897f 100644 --- a/files/build_templates/mgmt-framework.service.j2 +++ b/files/build_templates/mgmt-framework.service.j2 @@ -4,7 +4,6 @@ Requires=database.service After=database.service swss.service syncd.service BindsTo=sonic.target After=sonic.target -Conflicts=mgmt-framework.timer Before=ntp-config.service [Service] @@ -12,4 +11,3 @@ 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 - diff --git a/files/build_templates/mgmt-framework.timer b/files/build_templates/mgmt-framework.timer index 9b51e5e7edd..37389fbc6db 100644 --- a/files/build_templates/mgmt-framework.timer +++ b/files/build_templates/mgmt-framework.timer @@ -1,6 +1,6 @@ [Unit] Description=Delays management framework container until SONiC has started -Conflicts=mgmt-framework.service +PartOf=mgmt-framework.service [Timer] OnUnitActiveSec=0 sec @@ -9,4 +9,3 @@ Unit=mgmt-framework.service [Install] WantedBy=timers.target sonic.target - diff --git a/files/build_templates/snmp.service.j2 b/files/build_templates/snmp.service.j2 index b10e67999b9..5c9dfa24ce9 100644 --- a/files/build_templates/snmp.service.j2 +++ b/files/build_templates/snmp.service.j2 @@ -6,7 +6,6 @@ After=updategraph.service swss.service syncd.service BindsTo=sonic.target After=sonic.target Before=ntp-config.service -Conflicts=snmp.timer StartLimitIntervalSec=1200 StartLimitBurst=3 diff --git a/files/build_templates/snmp.timer b/files/build_templates/snmp.timer index 6d1838554d0..e31fc3980be 100644 --- a/files/build_templates/snmp.timer +++ b/files/build_templates/snmp.timer @@ -1,6 +1,6 @@ [Unit] Description=Delays snmp container until SONiC has started -Conflicts=snmp.service +PartOf=snmp.service [Timer] OnUnitActiveSec=0 sec diff --git a/files/build_templates/telemetry.service.j2 b/files/build_templates/telemetry.service.j2 index 511e23f7dae..aa02e75ac07 100644 --- a/files/build_templates/telemetry.service.j2 +++ b/files/build_templates/telemetry.service.j2 @@ -5,7 +5,6 @@ After=database.service swss.service syncd.service Before=ntp-config.service BindsTo=sonic.target After=sonic.target -Conflicts=telemetry.timer StartLimitIntervalSec=1200 StartLimitBurst=3 @@ -16,4 +15,3 @@ ExecStart=/usr/bin/{{docker_container_name}}.sh wait ExecStop=/usr/bin/{{docker_container_name}}.sh stop Restart=always RestartSec=30 - diff --git a/files/build_templates/telemetry.timer b/files/build_templates/telemetry.timer index 0ab50710b46..4a605b8c50c 100644 --- a/files/build_templates/telemetry.timer +++ b/files/build_templates/telemetry.timer @@ -1,6 +1,6 @@ [Unit] Description=Delays telemetry container until SONiC has started -Conflicts=telemetry.service +PartOf=telemetry.service [Timer] OnUnitActiveSec=0 sec @@ -9,4 +9,3 @@ Unit=telemetry.service [Install] WantedBy=timers.target sonic.target - From ea29122eb916e800a35f05379d1a910a1cf634c2 Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Mon, 26 Oct 2020 04:41:35 +0200 Subject: [PATCH 08/12] [services] make oneshot services RemainAfterExit=yes. To prevent restarts on 'systemctl start '. Signed-off-by: Stepan Blyshchak --- files/image_config/hostname/hostname-config.service | 2 +- files/image_config/interfaces/interfaces-config.service | 2 +- files/image_config/ntp/ntp-config.service | 2 +- files/image_config/rsyslog/rsyslog-config.service | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/files/image_config/hostname/hostname-config.service b/files/image_config/hostname/hostname-config.service index f82021cf323..c82c2d0bf54 100644 --- a/files/image_config/hostname/hostname-config.service +++ b/files/image_config/hostname/hostname-config.service @@ -7,8 +7,8 @@ After=sonic.target [Service] Type=oneshot +RemainAfterExit=yes ExecStart=/usr/bin/hostname-config.sh [Install] WantedBy=sonic.target - diff --git a/files/image_config/interfaces/interfaces-config.service b/files/image_config/interfaces/interfaces-config.service index 917686dc8dd..a3f71576461 100644 --- a/files/image_config/interfaces/interfaces-config.service +++ b/files/image_config/interfaces/interfaces-config.service @@ -7,8 +7,8 @@ After=sonic.target [Service] Type=oneshot +RemainAfterExit=yes ExecStart=/usr/bin/interfaces-config.sh [Install] WantedBy=sonic.target - diff --git a/files/image_config/ntp/ntp-config.service b/files/image_config/ntp/ntp-config.service index 4539b574d09..d6dd85f60b8 100644 --- a/files/image_config/ntp/ntp-config.service +++ b/files/image_config/ntp/ntp-config.service @@ -7,8 +7,8 @@ After=sonic.target [Service] Type=oneshot +RemainAfterExit=yes ExecStart=/usr/bin/ntp-config.sh [Install] WantedBy=sonic.target - diff --git a/files/image_config/rsyslog/rsyslog-config.service b/files/image_config/rsyslog/rsyslog-config.service index 875660c9f89..34c56fb0e00 100644 --- a/files/image_config/rsyslog/rsyslog-config.service +++ b/files/image_config/rsyslog/rsyslog-config.service @@ -7,8 +7,8 @@ After=sonic.target [Service] Type=oneshot +RemainAfterExit=yes ExecStart=/usr/bin/rsyslog-config.sh [Install] WantedBy=sonic.target - From 0e27a926fbb997710151a490d509278b43fc5e89 Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Mon, 26 Oct 2020 04:44:17 +0200 Subject: [PATCH 09/12] [services] remove redundant new-lines Signed-off-by: Stepan Blyshchak --- files/build_templates/restapi.service.j2 | 1 - files/build_templates/snmp.service.j2 | 1 - files/build_templates/sonic.target | 1 - 3 files changed, 3 deletions(-) diff --git a/files/build_templates/restapi.service.j2 b/files/build_templates/restapi.service.j2 index 35df3c43e9c..edc18167e93 100644 --- a/files/build_templates/restapi.service.j2 +++ b/files/build_templates/restapi.service.j2 @@ -16,4 +16,3 @@ RestartSec=30 [Install] WantedBy=sonic.target - diff --git a/files/build_templates/snmp.service.j2 b/files/build_templates/snmp.service.j2 index 5c9dfa24ce9..a510aac5571 100644 --- a/files/build_templates/snmp.service.j2 +++ b/files/build_templates/snmp.service.j2 @@ -15,4 +15,3 @@ ExecStart=/usr/bin/{{docker_container_name}}.sh wait ExecStop=/usr/bin/{{docker_container_name}}.sh stop Restart=always RestartSec=30 - diff --git a/files/build_templates/sonic.target b/files/build_templates/sonic.target index ee1eb663ee3..4070e21a080 100644 --- a/files/build_templates/sonic.target +++ b/files/build_templates/sonic.target @@ -3,4 +3,3 @@ Description=SONiC services target. [Install] WantedBy=multi-user.target - From 1739f5c84911f48778da6bd2ae4324a615450b4d Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Mon, 26 Oct 2020 04:46:05 +0200 Subject: [PATCH 10/12] [services] add procdockerstatsd to sonic.target Signed-off-by: Stepan Blyshchak --- .../debian/sonic-host-services-data.procdockerstatsd.service | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.procdockerstatsd.service b/src/sonic-host-services-data/debian/sonic-host-services-data.procdockerstatsd.service index 388197d9741..68b9e61b62c 100644 --- a/src/sonic-host-services-data/debian/sonic-host-services-data.procdockerstatsd.service +++ b/src/sonic-host-services-data/debian/sonic-host-services-data.procdockerstatsd.service @@ -2,6 +2,8 @@ Description=Process and docker CPU/memory utilization data export daemon Requires=database.service updategraph.service After=database.service updategraph.service +BindsTo=sonic.target +After=sonic.target [Service] Type=simple @@ -9,5 +11,4 @@ ExecStart=/usr/local/bin/procdockerstatsd Restart=always [Install] -WantedBy=multi-user.target - +WantedBy=sonic.target From 086599ace7f2d7106c9331b12744ccb52d43cd5e Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Mon, 16 Nov 2020 10:46:30 +0200 Subject: [PATCH 11/12] [sonic-host-services] add caclmgrd to sonic target] Signed-off-by: Stepan Blyshchak --- .../debian/sonic-host-services-data.caclmgrd.service | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/sonic-host-services-data/debian/sonic-host-services-data.caclmgrd.service b/src/sonic-host-services-data/debian/sonic-host-services-data.caclmgrd.service index 4df4d948ef1..e24ed10bb33 100644 --- a/src/sonic-host-services-data/debian/sonic-host-services-data.caclmgrd.service +++ b/src/sonic-host-services-data/debian/sonic-host-services-data.caclmgrd.service @@ -2,6 +2,8 @@ Description=Control Plane ACL configuration daemon Requires=updategraph.service After=updategraph.service +BindsTo=sonic.target +After=sonic.target [Service] Type=simple @@ -10,4 +12,4 @@ Restart=always RestartSec=30 [Install] -WantedBy=multi-user.target +WantedBy=sonic.target From 99a24b74826e10885ae0077449c9297d6bccce6e Mon Sep 17 00:00:00 2001 From: Stepan Blyshchak Date: Fri, 8 Jan 2021 15:08:09 +0200 Subject: [PATCH 12/12] [ntp] make ntp service part of sonic.target Signed-off-by: Stepan Blyshchak --- files/image_config/ntp/ntp.service | 2 ++ 1 file changed, 2 insertions(+) diff --git a/files/image_config/ntp/ntp.service b/files/image_config/ntp/ntp.service index acfd7e17266..32a55dea892 100644 --- a/files/image_config/ntp/ntp.service +++ b/files/image_config/ntp/ntp.service @@ -3,6 +3,8 @@ Description=Network Time Service Documentation=man:ntpd(8) After=network.target Conflicts=systemd-timesyncd.service +BindsTo=sonic.target +After=sonic.target StartLimitIntervalSec=0 [Service]