OvS: Implement cleaner shutdown and start logic

This PS adds cleaner shutdown and start logic to the OvS components.

Change-Id: I5c7fb212163a19d7584b37c20e7c6c757b498856
Co-Authored-By: SamYaple <sam@yaple.net>
This commit is contained in:
portdirect 2017-11-28 21:10:02 -05:00
parent f5a6a5dedc
commit cc81c5f558
4 changed files with 90 additions and 49 deletions

View File

@ -17,15 +17,32 @@ limitations under the License.
*/}} */}}
set -ex set -ex
COMMAND="${@:-start}"
mkdir -p "/run/openvswitch" OVS_DB=/run/openvswitch/conf.db
if [[ ! -e "/run/openvswitch/conf.db" ]]; then OVS_SOCKET=/run/openvswitch/db.sock
ovsdb-tool create "/run/openvswitch/conf.db" OVS_SCHEMA=/usr/share/openvswitch/vswitch.ovsschema
fi
umask 000 function start () {
exec /usr/sbin/ovsdb-server /run/openvswitch/conf.db \ mkdir -p "$(dirname ${OVS_DB})"
-vconsole:emer \ if [[ ! -e "${OVS_DB}" ]]; then
-vconsole:err \ ovsdb-tool create "${OVS_DB}"
-vconsole:info \ fi
--remote=punix:/run/openvswitch/db.sock
if [[ "$(ovsdb-tool needs-conversion ${OVS_DB} ${OVS_SCHEMA})" == 'yes' ]]; then
ovsdb-tool convert ${OVS_DB} ${OVS_SCHEMA}
fi
umask 000
exec /usr/sbin/ovsdb-server ${OVS_DB} \
-vconsole:emer \
-vconsole:err \
-vconsole:info \
--remote=punix:${OVS_SOCKET}
}
function stop () {
ovs-appctl -T1 -t /run/openvswitch/ovsdb-server.1.ctl exit
}
$COMMAND

View File

@ -17,47 +17,57 @@ limitations under the License.
*/}} */}}
set -ex set -ex
COMMAND="${@:-start}"
sock="/var/run/openvswitch/db.sock" OVS_SOCKET=/run/openvswitch/db.sock
t=0
while [ ! -e "${sock}" ] ; do
echo "waiting for ovs socket $sock"
sleep 1
t=$(($t+1))
if [ $t -ge 10 ] ; then
echo "no ovs socket, giving up"
exit 1
fi
done
ovs-vsctl --no-wait show function start () {
t=0
while [ ! -e "${OVS_SOCKET}" ] ; do
echo "waiting for ovs socket $sock"
sleep 1
t=$(($t+1))
if [ $t -ge 10 ] ; then
echo "no ovs socket, giving up"
exit 1
fi
done
external_bridge="{{- .Values.network.external_bridge -}}" ovs-vsctl --no-wait show
external_interface="{{- .Values.network.interface.external -}}"
if [ -n "${external_bridge}" ] ; then
# create bridge device
ovs-vsctl --no-wait --may-exist add-br $external_bridge
if [ -n "$external_interface" ] ; then
# add external interface to the bridge
ovs-vsctl --no-wait --may-exist add-port $external_bridge $external_interface
ip link set dev $external_interface up
fi
fi
# handle any bridge mappings external_bridge="{{- .Values.network.external_bridge -}}"
{{- range $br, $phys := .Values.network.auto_bridge_add }} external_interface="{{- .Values.network.interface.external -}}"
if [ -n "{{- $br -}}" ] ; then if [ -n "${external_bridge}" ] ; then
# create {{ $br }}{{ if $phys }} and add port {{ $phys }}{{ end }} # create bridge device
ovs-vsctl --no-wait --may-exist add-br "{{ $br }}" ovs-vsctl --no-wait --may-exist add-br $external_bridge
if [ -n "{{- $phys -}}" ] ; then if [ -n "$external_interface" ] ; then
ovs-vsctl --no-wait --may-exist add-port "{{ $br }}" "{{ $phys }}" # add external interface to the bridge
ip link set dev "{{ $phys }}" up ovs-vsctl --no-wait --may-exist add-port $external_bridge $external_interface
fi ip link set dev $external_interface up
fi fi
{{- end }} fi
exec /usr/sbin/ovs-vswitchd unix:/run/openvswitch/db.sock \ # handle any bridge mappings
-vconsole:emer \ {{- range $br, $phys := .Values.network.auto_bridge_add }}
-vconsole:err \ if [ -n "{{- $br -}}" ] ; then
-vconsole:info \ # create {{ $br }}{{ if $phys }} and add port {{ $phys }}{{ end }}
--mlockall ovs-vsctl --no-wait --may-exist add-br "{{ $br }}"
if [ -n "{{- $phys -}}" ] ; then
ovs-vsctl --no-wait --may-exist add-port "{{ $br }}" "{{ $phys }}"
ip link set dev "{{ $phys }}" up
fi
fi
{{- end }}
exec /usr/sbin/ovs-vswitchd unix:${OVS_SOCKET} \
-vconsole:emer \
-vconsole:err \
-vconsole:info \
--mlockall
}
function stop () {
ovs-appctl -T1 -t /run/openvswitch/ovs-vswitchd.1.ctl exit
}
$COMMAND

View File

@ -44,6 +44,13 @@ spec:
privileged: true privileged: true
command: command:
- /tmp/openvswitch-db-server.sh - /tmp/openvswitch-db-server.sh
- start
lifecycle:
preStop:
exec:
command:
- /tmp/openvswitch-db-server.sh
- stop
volumeMounts: volumeMounts:
- name: openvswitch-bin - name: openvswitch-bin
mountPath: /tmp/openvswitch-db-server.sh mountPath: /tmp/openvswitch-db-server.sh

View File

@ -70,6 +70,13 @@ spec:
- show - show
command: command:
- /tmp/openvswitch-vswitchd.sh - /tmp/openvswitch-vswitchd.sh
- start
lifecycle:
preStop:
exec:
command:
- /tmp/openvswitch-db-server.sh
- stop
volumeMounts: volumeMounts:
- name: openvswitch-bin - name: openvswitch-bin
mountPath: /tmp/openvswitch-vswitchd.sh mountPath: /tmp/openvswitch-vswitchd.sh