Skip to content

Commit

Permalink
Restart ovn-controller gracefully on PreStop
Browse files Browse the repository at this point in the history
Otherwise, it will clean up chassis and other relevant records and cause
unnecessary router failovers.

Related-Issue: OSPRH-10821
  • Loading branch information
booxter authored and karelyatin committed Oct 24, 2024
1 parent 26ff82e commit 152b017
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 1 deletion.
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
8 changes: 8 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
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

0 comments on commit 152b017

Please sign in to comment.