From df44cf00321b5d6c1edae15aa75dd2255d95b476 Mon Sep 17 00:00:00 2001 From: sharpd Date: Mon, 22 Feb 2016 13:22:16 -0800 Subject: [PATCH] debian: Revamp startup again Remove quagga.service, it was a bad idea culminating in a series of mistakes. Replaced with /usr/lib/quagga/quagga script. Use this script to start/stop quagga as a whole. Ticket: CM-9445 Signed-off-by: Donald Sharp Reviewed-by: Daniel Walton Reviewed-by: Dave Olson --- debian/bgpd.service | 2 +- debian/isisd.service | 2 +- debian/ospf6d.service | 2 +- debian/ospfd.service | 2 +- debian/ospfd@.service | 4 +-- debian/quagga.install | 2 +- debian/quagga.service | 34 ------------------- debian/ripd.service | 2 +- debian/rules | 2 -- debian/zebra.service | 2 +- tools/quagga | 74 ++++++++++++++++++++++++++++++++++++++++++ tools/quagga-reload.py | 4 +-- tools/startup | 20 ------------ 13 files changed, 85 insertions(+), 67 deletions(-) delete mode 100644 debian/quagga.service create mode 100755 tools/quagga delete mode 100755 tools/startup diff --git a/debian/bgpd.service b/debian/bgpd.service index 3162df1a4a..ace3ba5582 100644 --- a/debian/bgpd.service +++ b/debian/bgpd.service @@ -9,7 +9,7 @@ Nice=-5 EnvironmentFile=/etc/default/quagga Type=notify StartLimitInterval=3m -StartLimitBurst=3 +StartLimitBurst=6 TimeoutSec=1m WatchdogSec=60s RestartSec=5 diff --git a/debian/isisd.service b/debian/isisd.service index 888aaa0620..c86804118d 100644 --- a/debian/isisd.service +++ b/debian/isisd.service @@ -9,7 +9,7 @@ Nice=-5 Type=notify EnvironmentFile=/etc/default/quagga StartLimitInterval=3m -StartLimitBurst=3 +StartLimitBurst=6 TimeoutSec=1m WatchdogSec=60s RestartSec=5 diff --git a/debian/ospf6d.service b/debian/ospf6d.service index 31a9cd4777..95c237da9b 100644 --- a/debian/ospf6d.service +++ b/debian/ospf6d.service @@ -9,7 +9,7 @@ Nice=-5 Type=notify EnvironmentFile=/etc/default/quagga StartLimitInterval=3m -StartLimitBurst=3 +StartLimitBurst=6 TimeoutSec=1m WatchdogSec=60s RestartSec=5 diff --git a/debian/ospfd.service b/debian/ospfd.service index 92c310f642..e3ff047383 100644 --- a/debian/ospfd.service +++ b/debian/ospfd.service @@ -9,7 +9,7 @@ Type=notify Nice=-5 EnvironmentFile=/etc/default/quagga StartLimitInterval=3m -StartLimitBurst=3 +StartLimitBurst=6 TimeoutSec=1m WatchdogSec=60s RestartSec=5 diff --git a/debian/ospfd@.service b/debian/ospfd@.service index eb3fe9c1d9..64370cce2a 100644 --- a/debian/ospfd@.service +++ b/debian/ospfd@.service @@ -9,7 +9,7 @@ Type=notify Nice=-5 EnvironmentFile=/etc/default/quagga StartLimitInterval=3m -StartLimitBurst=3 +StartLimitBurst=15 TimeoutSec=1m WatchdogSec=60s RestartSec=5 @@ -17,6 +17,6 @@ Restart=on-abnormal LimitNOFILE=1024 ExecStart=/usr/lib/quagga/ospfd $OSPFD_OPTIONS -n %I ExecStartPost=/usr/bin/vtysh -b -n -ExecStopPost=/bin/touch /var/run/quagga/ospfd.%I.was_running +ExecStopPost=/bin/touch /var/run/quagga/ospfd@%I.was_running [Install] WantedBy=network-online.target diff --git a/debian/quagga.install b/debian/quagga.install index 0c3db58ffa..14ac7937bc 100644 --- a/debian/quagga.install +++ b/debian/quagga.install @@ -3,7 +3,7 @@ usr/bin/vtysh usr/include/quagga/ usr/lib/ tools/quagga-reload.py usr/lib/quagga/ -tools/startup usr/lib/quagga/ +tools/quagga usr/lib/quagga usr/share/doc/quagga/ usr/share/man/man1/vtysh.1 usr/share/man/man8 diff --git a/debian/quagga.service b/debian/quagga.service deleted file mode 100644 index f052740b8f..0000000000 --- a/debian/quagga.service +++ /dev/null @@ -1,34 +0,0 @@ -[Unit] -Description=Cumulus Linux Quagga convenience service -After=networking.service syslog.service - -[Service] -EnvironmentFile=-/etc/default/quagga -Type=simple -RemainAfterExit=yes -TimeoutSec=2m30s -TimeoutStopSec=1m -ExecStartPre=-/usr/lib/quagga/startup zebra -ExecStartPre=-/usr/lib/quagga/startup bgpd -ExecStartPre=-/usr/lib/quagga/startup isisd -ExecStartPre=-/usr/lib/quagga/startup ospfd -ExecStartPre=-/usr/lib/quagga/startup ospf6d -ExecStartPre=-/usr/lib/quagga/startup ripd -ExecStartPre=-/usr/lib/quagga/startup ripngd -ExecStartPost=-/usr/bin/vtysh -b -n -# -ExecReload=/usr/lib/quagga/quagga-reload.py --reload /etc/quagga/Quagga.conf -# -ExecStart=/bin/true -ExecStop=/bin/true -# -ExecStopPost=-/bin/systemctl stop bgpd.service -ExecStopPost=-/bin/systemctl stop isisd.service -ExecStopPost=-/bin/systemctl stop ospfd.service -ExecStopPost=-/bin/systemctl stop ospf6d.service -ExecStopPost=-/bin/systemctl stop ripd.service -ExecStopPost=-/bin/systemctl stop ripngd.service -ExecStopPost=-/bin/systemctl stop zebra.service - -[Install] -WantedBy=network-online.target diff --git a/debian/ripd.service b/debian/ripd.service index f322d8db5f..f001b797f3 100644 --- a/debian/ripd.service +++ b/debian/ripd.service @@ -9,7 +9,7 @@ Nice=-5 Type=notify EnvironmentFile=/etc/default/quagga StartLimitInterval=3m -StartLimitBurst=3 +StartLimitBurst=6 TimeoutSec=1m WatchdogSec=60s RestartSec=5 diff --git a/debian/rules b/debian/rules index 30220c9208..f8fc2fa4d5 100755 --- a/debian/rules +++ b/debian/rules @@ -112,7 +112,6 @@ override_dh_auto_install: sed -i "/dependency_libs/ s/'.*'/''/" debian/tmp/usr/lib/*.la override_dh_systemd_start: - dh_systemd_start quagga.service dh_systemd_start bgpd.service dh_systemd_start isisd.service dh_systemd_start ospfd.service @@ -122,7 +121,6 @@ override_dh_systemd_start: dh_systemd_start zebra.service override_dh_systemd_enable: - dh_systemd_enable --no-enable quagga.service dh_systemd_enable --no-enable bgpd.service dh_systemd_enable --no-enable isisd.service dh_systemd_enable --no-enable ospfd.service diff --git a/debian/zebra.service b/debian/zebra.service index 281a162d2d..042d5a5396 100644 --- a/debian/zebra.service +++ b/debian/zebra.service @@ -8,7 +8,7 @@ Nice=-5 EnvironmentFile=/etc/default/quagga Type=notify StartLimitInterval=3m -StartLimitBurst=3 +StartLimitBurst=6 TimeoutSec=1m WatchdogSec=60s RestartSec=5 diff --git a/tools/quagga b/tools/quagga new file mode 100755 index 0000000000..f96fede6ef --- /dev/null +++ b/tools/quagga @@ -0,0 +1,74 @@ +#!/bin/bash + +startup() +{ + FILE="/var/run/quagga/$1.was_running" + + /bin/systemctl reset-failed $1 + + if [ -e $FILE ] + then + rm $FILE + systemctl start $1 + fi + + /bin/systemctl is-enabled $1 > /dev/null 2>&1 + if [ $? -eq 0 ] + then + systemctl start $1 + fi +} + +start_ospfd_multiinstance() +{ + for instance in $MI; do + echo "Starting $instance" + startup ospfd@$instance + done +} + +start_daemons() +{ + startup zebra + startup bgpd + startup ospfd + startup ospf6d + startup ripd + startup ripngd + startup isisd + start_ospfd_multiinstance +} + +stop_ospfd_multiinstance() +{ + for instance in $MI; do + echo "Stopping instance: $instance" + /bin/systemctl stop ospfd@$instance + done +} + +stop_daemons() +{ + stop_ospfd_multiinstance + /bin/systemctl stop bgpd ospfd ospf6d ripd ripngd isisd zebra +} + +MI=`systemctl list-units 'ospfd@*'| sed -n -e '/@/s/\..*//' -e 's/.*@//p'` +case "$1" in + start) + start_daemons + ;; + stop) + stop_daemons + ;; + restart) + stop_daemons + start_daemons + ;; + reload) + /usr/lib/quagga/quagga-reload.py --reload /etc/quagga/Quagga.conf + exit $? + ;; +esac + +exit 0 diff --git a/tools/quagga-reload.py b/tools/quagga-reload.py index 11266a1a28..258bec0834 100755 --- a/tools/quagga-reload.py +++ b/tools/quagga-reload.py @@ -500,7 +500,7 @@ if __name__ == '__main__': print "'service integrated-vtysh-config' is not configured, this is required for 'service quagga reload'" sys.exit(1) - status_error = int(subprocess.call('service quagga status', shell=True)) + status_error = int(subprocess.call('/usr/lib/quagga/quagga status', shell=True)) if status_error: print "quagga is not running" @@ -644,5 +644,5 @@ if __name__ == '__main__': subprocess.call(cmd) if restart_bgp: - cmd = ['sudo', 'service', 'quagga', 'restart', 'bgpd'] + cmd = ['sudo', 'systemctl', 'restart', 'bgpd'] subprocess.call(cmd) diff --git a/tools/startup b/tools/startup deleted file mode 100755 index 7ebb5116a1..0000000000 --- a/tools/startup +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash -# Script to see if we should startup the particular -# daemon as part of systemd initialization -# If the daemon was running (set by the ExecStopPost -# action in the Unit file ) or if the daemon -# is enabled start it up -FILE="/var/run/quagga/$1.was_running" -if [ -e $FILE ] -then - rm $FILE - systemctl start $1 -fi - -systemctl is-enabled $1 > /dev/null -if [ $? -eq 0 ] -then - systemctl start $1 -fi - -exit 0 -- 2.39.5