]> git.puffer.fish Git - mirror/frr.git/commitdiff
debian: Revamp startup again
authorsharpd <sharpd@cumulusnetworks.com>
Mon, 22 Feb 2016 21:22:16 +0000 (13:22 -0800)
committersharpd <sharpd@cumulusnetworks.com>
Tue, 23 Feb 2016 16:54:01 +0000 (08:54 -0800)
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 <sharpd@cumulusnetworks.com>
Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
Reviewed-by: Dave Olson <olson@cumulusnetworks.com>
13 files changed:
debian/bgpd.service
debian/isisd.service
debian/ospf6d.service
debian/ospfd.service
debian/ospfd@.service
debian/quagga.install
debian/quagga.service [deleted file]
debian/ripd.service
debian/rules
debian/zebra.service
tools/quagga [new file with mode: 0755]
tools/quagga-reload.py
tools/startup [deleted file]

index 3162df1a4ae05416d8e0a4764c12af492cc25ed6..ace3ba5582d17aee709ff1bc89a27b52fb850715 100644 (file)
@@ -9,7 +9,7 @@ Nice=-5
 EnvironmentFile=/etc/default/quagga
 Type=notify
 StartLimitInterval=3m
-StartLimitBurst=3
+StartLimitBurst=6
 TimeoutSec=1m
 WatchdogSec=60s
 RestartSec=5
index 888aaa06209aa67fe9c75cee35938f60e89cdf44..c86804118ddb1d6df1a4b469deb245df53ff6679 100644 (file)
@@ -9,7 +9,7 @@ Nice=-5
 Type=notify
 EnvironmentFile=/etc/default/quagga
 StartLimitInterval=3m
-StartLimitBurst=3
+StartLimitBurst=6
 TimeoutSec=1m
 WatchdogSec=60s
 RestartSec=5
index 31a9cd477762cef609d473b30744eb065b313491..95c237da9b5b3780c82ba092f9972b9bf6b63687 100644 (file)
@@ -9,7 +9,7 @@ Nice=-5
 Type=notify
 EnvironmentFile=/etc/default/quagga
 StartLimitInterval=3m
-StartLimitBurst=3
+StartLimitBurst=6
 TimeoutSec=1m
 WatchdogSec=60s
 RestartSec=5
index 92c310f6426c687cdc213c894591ed56109216b1..e3ff0473833e9fd2913ac0f903914d1dd7309e24 100644 (file)
@@ -9,7 +9,7 @@ Type=notify
 Nice=-5
 EnvironmentFile=/etc/default/quagga
 StartLimitInterval=3m
-StartLimitBurst=3
+StartLimitBurst=6
 TimeoutSec=1m
 WatchdogSec=60s
 RestartSec=5
index eb3fe9c1d9914e1712cfd9bba7e7515b48a17fe1..64370cce2a7e62e4cd8f399fc8b33c684602dca9 100644 (file)
@@ -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
index 0c3db58ffac04bd7c9e98aa823ed314f858da641..14ac7937bc9ea8483946742e44e25f68c6223cf4 100644 (file)
@@ -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 (file)
index f052740..0000000
+++ /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
index f322d8db5fb45b6f0192958179916b567a249843..f001b797f31e8673d9b946130e9656bc89af1650 100644 (file)
@@ -9,7 +9,7 @@ Nice=-5
 Type=notify
 EnvironmentFile=/etc/default/quagga
 StartLimitInterval=3m
-StartLimitBurst=3
+StartLimitBurst=6
 TimeoutSec=1m
 WatchdogSec=60s
 RestartSec=5
index 30220c920833189639104138a4aae34ad8b82010..f8fc2fa4d538f97858e9efbb97bdbddc1f1f9a0a 100755 (executable)
@@ -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
index 281a162d2d6ab2cf874b2608262665d97af79af6..042d5a53961df894d4eff162614204aa77af0a50 100644 (file)
@@ -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 (executable)
index 0000000..f96fede
--- /dev/null
@@ -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
index 11266a1a28543b47c55a0e31ab4e6d2e50f356ef..258bec08345a79f2d5234635f2d0cd83e6ca588d 100755 (executable)
@@ -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 (executable)
index 7ebb511..0000000
+++ /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