mirror of
https://github.com/openvswitch/ovs
synced 2025-08-22 01:51:26 +00:00
rhel: Add support for "systemctl reload openvswitch"
The reload procedure will trigger a script that saves the flows and tlv maps (using ovs-save) then it restarts ovsdb-server, it stops ovs-vswitchd, it sets other_config:flow-restore-wait=true (to wait till flow restore is finished), it starts ovs-vswitchd, it restore the backupped flows/tlv maps and it removes other_config:flow-restore-wait=true (logic mostly ripped from ovs-ctl). It uses systemctl with --job-mode=ignore-dependencies to restart ovsdb-server and stop and start ovs-vswitchd in order to avoid systemd to restart the other components due to dependencies (as explained in rhel/README.RHEL.rst). Signed-off-by: Timothy Redaelli <tredaelli@redhat.com> Signed-off-by: Ben Pfaff <blp@ovn.org> Acked-by: Flavio Leitner <fbl@sysclose.org>
This commit is contained in:
parent
1cfa77b6c2
commit
ea36b04688
@ -24,6 +24,7 @@ EXTRA_DIST += \
|
||||
rhel/openvswitch.spec.in \
|
||||
rhel/openvswitch-fedora.spec \
|
||||
rhel/openvswitch-fedora.spec.in \
|
||||
rhel/usr_share_openvswitch_scripts_ovs-systemd-reload \
|
||||
rhel/usr_share_openvswitch_scripts_sysconfig.template \
|
||||
rhel/usr_share_openvswitch_scripts_systemd_sysconfig.template \
|
||||
rhel/usr_lib_udev_rules.d_91-vfio.rules \
|
||||
|
@ -314,6 +314,10 @@ install -d -m 0755 $RPM_BUILD_ROOT%{_prefix}/lib/ocf/resource.d/ovn
|
||||
ln -s %{_datadir}/openvswitch/scripts/ovndb-servers.ocf \
|
||||
$RPM_BUILD_ROOT%{_prefix}/lib/ocf/resource.d/ovn/ovndb-servers
|
||||
|
||||
install -p -D -m 0755 \
|
||||
rhel/usr_share_openvswitch_scripts_ovs-systemd-reload \
|
||||
$RPM_BUILD_ROOT%{_datadir}/openvswitch/scripts/ovs-systemd-reload
|
||||
|
||||
# remove unpackaged files
|
||||
rm -f $RPM_BUILD_ROOT%{_bindir}/ovs-parse-backtrace \
|
||||
$RPM_BUILD_ROOT%{_sbindir}/ovs-vlan-bug-workaround \
|
||||
@ -539,6 +543,7 @@ fi
|
||||
%{_datadir}/openvswitch/scripts/ovs-save
|
||||
%{_datadir}/openvswitch/scripts/ovs-vtep
|
||||
%{_datadir}/openvswitch/scripts/ovs-ctl
|
||||
%{_datadir}/openvswitch/scripts/ovs-systemd-reload
|
||||
%config %{_datadir}/openvswitch/vswitch.ovsschema
|
||||
%config %{_datadir}/openvswitch/vtep.ovsschema
|
||||
%{_bindir}/ovs-appctl
|
||||
|
@ -9,7 +9,7 @@ Requires=ovs-vswitchd.service
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=/bin/true
|
||||
ExecReload=/bin/true
|
||||
ExecReload=/usr/share/openvswitch/scripts/ovs-systemd-reload
|
||||
ExecStop=/bin/true
|
||||
RemainAfterExit=yes
|
||||
|
||||
|
@ -3,7 +3,6 @@ Description=Open vSwitch Database Unit
|
||||
After=syslog.target network-pre.target
|
||||
Before=network.target network.service
|
||||
Wants=ovs-delete-transient-ports.service
|
||||
ReloadPropagatedFrom=openvswitch.service
|
||||
PartOf=openvswitch.service
|
||||
|
||||
[Service]
|
||||
|
36
rhel/usr_share_openvswitch_scripts_ovs-systemd-reload
Executable file
36
rhel/usr_share_openvswitch_scripts_ovs-systemd-reload
Executable file
@ -0,0 +1,36 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Copyright (c) 2017 Red Hat, Inc.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at:
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# Save flows
|
||||
bridges=$(ovs-vsctl -- --real list-br)
|
||||
flows=$(/usr/share/openvswitch/scripts/ovs-save save-flows $bridges)
|
||||
|
||||
# Restart the database first, since a large database may take a
|
||||
# while to load, and we want to minimize forwarding disruption.
|
||||
systemctl --job-mode=ignore-dependencies restart ovsdb-server
|
||||
|
||||
# Stop ovs-vswitchd.
|
||||
systemctl --job-mode=ignore-dependencies stop ovs-vswitchd
|
||||
|
||||
# Start vswitchd by asking it to wait till flow restore is finished.
|
||||
ovs-vsctl --no-wait set open_vswitch . other_config:flow-restore-wait=true
|
||||
systemctl --job-mode=ignore-dependencies start ovs-vswitchd
|
||||
|
||||
# Restore saved flows and inform vswitchd that we are done.
|
||||
eval "$flows"
|
||||
ovs-vsctl --if-exists remove open_vswitch . other_config flow-restore-wait=true
|
||||
|
||||
exit 0
|
Loading…
x
Reference in New Issue
Block a user