Currently upgrade of ovn-host rpm package affects active
traffic. This is because systemctl try-restart
ovn-controller is invoked during rpm package upgrade.
It calls ovn-ctl stop_controller and then start_controller.

Adding ovn-ctl stop_controller --restart to %postun
upgrade case right before systemctl try-restart. Also,
upgrade ovn-ctl script to support --restart argument in it.

Ideally this should be done by systemd when restart is
called, but it's impossible to pass restart command to
systemd.

Signed-off-by: Vladislav Odintsov <odiv...@gmail.com>
---
 rhel/ovn-fedora.spec.in |  8 ++++++++
 utilities/ovn-ctl       | 10 ++++++++--
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/rhel/ovn-fedora.spec.in b/rhel/ovn-fedora.spec.in
index 6716dd0d2..5fe0f990f 100644
--- a/rhel/ovn-fedora.spec.in
+++ b/rhel/ovn-fedora.spec.in
@@ -400,6 +400,14 @@ fi
 %endif
 
 %postun host
+if [ "$1" -ge "1" ] ; then
+    # Package upgrade, not uninstall
+    # We perform lightweight stop here not to affect active traffic during
+    # ovn-controller upgrade.
+    # Ideally this would be held by systemd, but it's impossible
+    # to pass custom restart command to systemd service.
+    %{_datadir}/ovn/scripts/ovn-ctl stop_controller --restart
+fi
 %if 0%{?systemd_postun_with_restart:1}
     %systemd_postun_with_restart ovn-controller.service
 %else
diff --git a/utilities/ovn-ctl b/utilities/ovn-ctl
index ff61f21d0..b30eb209d 100755
--- a/utilities/ovn-ctl
+++ b/utilities/ovn-ctl
@@ -584,7 +584,11 @@ stop_ic () {
 }
 
 stop_controller () {
-    OVS_RUNDIR=${OVS_RUNDIR} stop_ovn_daemon ovn-controller "" "" "$@"
+    set "ovn-controller" "" ""
+    if test X"$RESTART" = Xyes; then
+        set "$@" "--restart"
+    fi
+    OVS_RUNDIR=${OVS_RUNDIR} stop_ovn_daemon "$@"
 }
 
 stop_controller_vtep () {
@@ -606,7 +610,8 @@ restart_ic () {
 }
 
 restart_controller () {
-    stop_controller --restart
+    RESTART=yes
+    stop_controller
     start_controller
 }
 
@@ -651,6 +656,7 @@ restart_ic_sb_ovsdb () {
 
 set_defaults () {
     OVN_MANAGE_OVSDB=yes
+    RESTART=no
 
     OVS_RUNDIR=${OVS_RUNDIR:-${rundir}}
     OVN_RUNDIR=${OVN_RUNDIR:-${ovn_rundir}}
-- 
2.30.0

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to