[ovs-dev] [PATCH 2/2] fedora: Handle upgrades from rhel package.
Aaron Conole
aconole at redhat.com
Fri May 3 18:36:29 UTC 2019
Gurucharan Shetty <guru at ovn.org> writes:
> Currently we have rhel/openvswitch.spec.in that provides
> sysv scripts. The fedora package provides systemd scripts.
> If one upgrades openvswitch package from sysv to systemd,
> you will end up in a situation where old OVS daemons are
> running, but systemd does not know about it. One "restart"
> is needed for systemd to see the old daemons. Another "restart"
> or "force-reload-kmod" is needed to actually use the new
> daemons.
Is this true? I thought the restart would actually run the restart
action and that would spawn new instances of the daemons. It seems like
a strange behavior.
> This commit, just takes care of the first restart. The "real"
> restart/force-reload-kmod will still have to be done outside
> the package installation.
>
> Signed-off-by: Gurucharan Shetty <guru at ovn.org>
> ---
I'm still not clear on the reasoning to only do the 'restart' on
upgrade from the sysv style. If we're going through the trouble to
auto-enable it seems confusing that the service gets enabled but not
started, but only sometimes. Maybe it's best that if this autoenable
flag is set, the daemons are also spawned.
> rhel/openvswitch-fedora.spec.in | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/rhel/openvswitch-fedora.spec.in b/rhel/openvswitch-fedora.spec.in
> index e8165f9..d41d11c 100644
> --- a/rhel/openvswitch-fedora.spec.in
> +++ b/rhel/openvswitch-fedora.spec.in
> @@ -364,6 +364,12 @@ getent passwd openvswitch >/dev/null || \
> usermod -a -G hugetlbfs openvswitch
> %endif
> %endif
> +
> +%if %{with autoenable}
> + if [ -x "/etc/init.d/openvswitch" ]; then
> + touch %{_tmppath}/ovs-upgrade-from-sysv
> + fi
> +%endif
> exit 0
>
> %post
> @@ -397,6 +403,14 @@ fi
> %if %{with autoenable}
> systemctl daemon-reload
> systemctl enable openvswitch
> + # Handle upgrades to this package from the OVS repo's rhel packages.
> + # One "restart" is needed for newer systemd files to see the old running
> + # daemons. Another "restart" (outside the package postinst script) is
> + # needed to actually run new daemons.
> + if [ -e "%{_tmppath}/ovs-upgrade-from-sysv" ]; then
> + systemctl restart openvswitch
> + rm "%{_tmppath}/ovs-upgrade-from-sysv"
> + fi
> %endif
>
> %post selinux-policy
More information about the dev
mailing list