Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restart ovn-controller gracefully on PreStop #368

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pkg/ovncontroller/daemonset.go
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ func CreateOVNDaemonSet(
Lifecycle: &corev1.Lifecycle{
PreStop: &corev1.LifecycleHandler{
Exec: &corev1.ExecAction{
Command: []string{"/usr/share/ovn/scripts/ovn-ctl", "stop_controller"},
Command: []string{"/usr/local/bin/container-scripts/stop-ovn-controller.sh"},
},
},
},
Expand Down
9 changes: 9 additions & 0 deletions templates/ovncontroller/bin/functions
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,14 @@ ovs_dir=/var/lib/openvswitch
FLOWS_RESTORE_SCRIPT=$ovs_dir/flows-script
FLOWS_RESTORE_DIR=$ovs_dir/saved-flows
SAFE_TO_STOP_OVSDB_SERVER_SEMAPHORE=$ovs_dir/is_safe_to_stop_ovsdb_server
OVN_CONTROLLER_CLEANUP_CHASSIS_FLAG=$ovs_dir/cleanup_chassis

function ovn_controller_is_restarting() {
if [ ! -f $OVN_CONTROLLER_CLEANUP_CHASSIS_FLAG ]; then
return 0
fi
return 1
}

function cleanup_ovsdb_server_semaphore() {
rm -f $SAFE_TO_STOP_OVSDB_SERVER_SEMAPHORE 2>&1 > /dev/null
Expand Down Expand Up @@ -54,6 +62,7 @@ function configure_external_ids {
ovs-vsctl set open . external-ids:ovn-bridge=${OVNBridge}
ovs-vsctl set open . external-ids:ovn-remote=${OVNRemote}
ovs-vsctl set open . external-ids:ovn-encap-type=${OVNEncapType}
ovs-vsctl set open . external-ids:ovn-ofctrl-wait-before-clear="8000"
if [ -n "$OVNHostName" ]; then
ovs-vsctl set open . external-ids:hostname=${OVNHostName}
fi
Expand Down
25 changes: 25 additions & 0 deletions templates/ovncontroller/bin/stop-ovn-controller.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#!/bin/sh
#
# Copyright 2024 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.

set -ex
source $(dirname $0)/functions

OPTS=
if ovn_controller_is_restarting; then
OPTS+="--restart"
fi

/usr/share/ovn/scripts/ovn-ctl stop_controller $OPTS