Message ID | 20210917132750.4114-1-odivlad@gmail.com |
---|---|
State | Accepted |
Headers | show |
Series | [ovs-dev] rhel, utils: don't affect traffic on controller upgrade | expand |
Context | Check | Description |
---|---|---|
ovsrobot/apply-robot | success | apply and check: success |
ovsrobot/github-robot-_Build_and_Test | success | github build: passed |
ovsrobot/github-robot-_ovn-kubernetes | fail | github build: failed |
On Fri, Sep 17, 2021 at 9:28 AM Vladislav Odintsov <odivlad@gmail.com> wrote: > > 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 <odivlad@gmail.com> Thanks for the patch. I applied this patch. I did try to find a better way to fix it. Seems to me this is the only way. Numan > --- > 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 > dev@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev >
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}}
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 <odivlad@gmail.com> --- rhel/ovn-fedora.spec.in | 8 ++++++++ utilities/ovn-ctl | 10 ++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-)