if test -f "$pidfile"; then
local pid=$(cat "$pidfile")
action "Killing `basename $BINARY` ($pid)" kill $pid
+ for delay in .1 .25 .65 1 1 1 1; do
+ if kill -0 $pid >/dev/null 2>&1; then
+ sleep $delay
+ else
+ break
+ fi
+ done
rm -f "$pidfile"
fi
}
esac
}
-function set_system_uuid {
- if test -n "$INSTALLATION_UUID"; then
- action "Configuring Open vSwitch system UUID" true
- $vsctl --no-wait set Open_vSwitch . external-ids:system-uuid="$INSTALLATION_UUID"
+function set_system_ids {
+ if [ -f /etc/xensource-inventory ]; then
+ action "Configuring Open vSwitch system IDs" true
+ $vsctl --no-wait --timeout=5 set Open_vSwitch . \
+ external-ids:system-type="$PRODUCT_BRAND" \
+ external-ids:system-version="$PRODUCT_VERSION-$BUILD_NUMBER" \
+ external-ids:system-id="$INSTALLATION_UUID" \
+ external-ids:xs-system-uuid="$INSTALLATION_UUID"
else
- action "Configuring Open vSwitch system UUID" false
+ action "Configuring Open vSwitch system IDs" false
fi
}
fi
start_ovsdb_server
- $vsctl --no-wait init
+ $vsctl --no-wait --timeout=5 init
if [ ! -e /var/run/openvswitch.booted ]; then
touch /var/run/openvswitch.booted
for bridge in $($vsctl list-br); do
- $vsctl --no-wait del-br $bridge
+ $vsctl --no-wait --timeout=5 del-br $bridge
done
fi
- set_system_uuid
+ set_system_ids
start_vswitchd
if [ "${ENABLE_BRCOMPAT}" = "y" ] ; then
start_brcompatd
fi
+
+ # Start daemon to monitor external ids
+ PYTHONPATH=/usr/share/openvswitch/python \
+ /usr/share/openvswitch/scripts/ovs-external-ids \
+ --pidfile --detach $monitor_opt "$VSWITCHD_OVSDB_SERVER"
+
touch /var/lock/subsys/openvswitch
}
stop_daemon BRCOMPATD "$brcompatd"
stop_daemon VSWITCHD "$vswitchd"
stop_daemon OVSDB_SERVER "$ovsdb_server"
+ if [ -e /var/run/openvswitch/ovs-external-ids.pid ]; then
+ kill `cat /var/run/openvswitch/ovs-external-ids.pid`
+ fi
rm -f /var/lock/subsys/openvswitch
}