Move the functions related to "force-reload-kmod" and "restart" from ovs-ctl.in to ovs-lib.in in order to permit other scripts to use them.
Signed-off-by: Timothy Redaelli <tredae...@redhat.com> --- utilities/ovs-ctl.in | 173 --------------------------------------------------- utilities/ovs-lib.in | 173 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 173 insertions(+), 173 deletions(-) diff --git a/utilities/ovs-ctl.in b/utilities/ovs-ctl.in index f1b01d1d3..1df56c4a5 100755 --- a/utilities/ovs-ctl.in +++ b/utilities/ovs-ctl.in @@ -63,10 +63,6 @@ insert_mod_if_required () { insert_mods } -ovs_vsctl () { - ovs-vsctl --no-wait "$@" -} - set_hostname () { # 'hostname -f' needs network connectivity to work. So we should # call this only after ovs-vswitchd is running. @@ -270,175 +266,6 @@ stop_forwarding () { fi } -## ----------------- ## -## force-reload-kmod ## -## ----------------- ## - -internal_interfaces () { - # Outputs a list of internal interfaces: - # - # - There is an internal interface for every bridge, whether it - # has an Interface record or not and whether the Interface - # record's 'type' is properly set or not. - # - # - There is an internal interface for each Interface record whose - # 'type' is 'internal'. - # - # But ignore interfaces that don't really exist. - for d in `(ovs_vsctl --bare \ - -- --columns=name find Interface type=internal \ - -- list-br) | sort -u` - do - if test -e "/sys/class/net/$d"; then - printf "%s " "$d" - fi - done -} - -ovs_save () { - bridges=`ovs_vsctl -- --real list-br` - if [ -n "${bridges}" ] && \ - "$datadir/scripts/ovs-save" "$1" ${bridges} > "$2"; then - chmod +x "$2" - return 0 - fi - [ -z "${bridges}" ] && return 0 -} - -save_flows_if_required () { - if test X"$DELETE_BRIDGES" != Xyes; then - action "Saving flows" ovs_save save-flows "${script_flows}" - fi -} - -save_interfaces () { - "$datadir/scripts/ovs-save" save-interfaces ${ifaces} \ - > "${script_interfaces}" -} - -flow_restore_wait () { - if test X"$OVS_VSWITCHD" = Xyes; then - ovs_vsctl set open_vswitch . other_config:flow-restore-wait="true" - fi -} - -flow_restore_complete () { - if test X"$OVS_VSWITCHD" = Xyes; then - ovs_vsctl --if-exists remove open_vswitch . other_config \ - flow-restore-wait="true" - fi -} - -restore_flows () { - [ -x "${script_flows}" ] && \ - action "Restoring saved flows" "${script_flows}" -} - -restore_interfaces () { - [ ! -x "${script_interfaces}" ] && return 0 - action "Restoring interface configuration" "${script_interfaces}" - rc=$? - if test $rc = 0; then - level=debug - else - level=err - fi - log="logger -p daemon.$level -t ovs-save" - $log "interface restore script exited with status $rc:" - $log -f "$script_interfaces" -} - -init_restore_scripts () { - script_interfaces=`mktemp` - script_flows=`mktemp` - trap 'rm -f "${script_interfaces}" "${script_flows}"' 0 -} - -force_reload_kmod () { - - if test X"$OVS_VSWITCHD" != Xyes; then - log_failure_msg "Reloading of kmod without ovs-vswitchd is an error" - exit 1 - fi - - ifaces=`internal_interfaces` - action "Detected internal interfaces: $ifaces" true - - init_restore_scripts - save_flows_if_required - - # Restart the database first, since a large database may take a - # while to load, and we want to minimize forwarding disruption. - stop_ovsdb - start_ovsdb || return 1 - - stop_forwarding - - if action "Saving interface configuration" save_interfaces; then - : - else - log_warning_msg "Failed to save configuration, not replacing kernel module" - start_forwarding - add_managers - exit 1 - fi - chmod +x "$script_interfaces" - - for dp in `ovs-dpctl dump-dps`; do - action "Removing datapath: $dp" ovs-dpctl del-dp "$dp" - done - - for vport in `awk '/^vport_/ { print $1 }' /proc/modules`; do - action "Removing $vport module" rmmod $vport - done - - if test -e /sys/module/openvswitch; then - action "Removing openvswitch module" rmmod openvswitch - fi - - # Start vswitchd by asking it to wait till flow restore is finished. - flow_restore_wait - start_forwarding || return 1 - - # Restore saved flows and inform vswitchd that we are done. - restore_flows - flow_restore_complete - add_managers - - restore_interfaces - - "$datadir/scripts/ovs-check-dead-ifs" -} - -## ------- ## -## restart ## -## ------- ## - -restart () { - if daemon_is_running ovsdb-server && daemon_is_running ovs-vswitchd; then - init_restore_scripts - if test X"$OVS_VSWITCHD" = Xyes; then - save_flows_if_required - fi - fi - - # Restart the database first, since a large database may take a - # while to load, and we want to minimize forwarding disruption. - stop_ovsdb - start_ovsdb || return 1 - - stop_forwarding - - # Start vswitchd by asking it to wait till flow restore is finished. - flow_restore_wait - start_forwarding || return 1 - - # Restore saved flows and inform vswitchd that we are done. - restore_flows - flow_restore_complete - add_managers -} - ## --------------- ## ## enable-protocol ## ## --------------- ## diff --git a/utilities/ovs-lib.in b/utilities/ovs-lib.in index 1bccea0c5..5e25f85c8 100644 --- a/utilities/ovs-lib.in +++ b/utilities/ovs-lib.in @@ -440,3 +440,176 @@ upgrade_db () { fi fi } + +ovs_vsctl () { + ovs-vsctl --no-wait "$@" +} + +## ----------------- ## +## force-reload-kmod ## +## ----------------- ## + +internal_interfaces () { + # Outputs a list of internal interfaces: + # + # - There is an internal interface for every bridge, whether it + # has an Interface record or not and whether the Interface + # record's 'type' is properly set or not. + # + # - There is an internal interface for each Interface record whose + # 'type' is 'internal'. + # + # But ignore interfaces that don't really exist. + for d in `(ovs_vsctl --bare \ + -- --columns=name find Interface type=internal \ + -- list-br) | sort -u` + do + if test -e "/sys/class/net/$d"; then + printf "%s " "$d" + fi + done +} + +ovs_save () { + bridges=`ovs_vsctl -- --real list-br` + if [ -n "${bridges}" ] && \ + "$datadir/scripts/ovs-save" "$1" ${bridges} > "$2"; then + chmod +x "$2" + return 0 + fi + [ -z "${bridges}" ] && return 0 +} + +save_flows_if_required () { + if test X"$DELETE_BRIDGES" != Xyes; then + action "Saving flows" ovs_save save-flows "${script_flows}" + fi +} + +save_interfaces () { + "$datadir/scripts/ovs-save" save-interfaces ${ifaces} \ + > "${script_interfaces}" +} + +flow_restore_wait () { + if test X"${OVS_VSWITCHD:-yes}" = Xyes; then + ovs_vsctl set open_vswitch . other_config:flow-restore-wait="true" + fi +} + +flow_restore_complete () { + if test X"${OVS_VSWITCHD:-yes}" = Xyes; then + ovs_vsctl --if-exists remove open_vswitch . other_config \ + flow-restore-wait="true" + fi +} + +restore_flows () { + [ -x "${script_flows}" ] && \ + action "Restoring saved flows" "${script_flows}" +} + +restore_interfaces () { + [ ! -x "${script_interfaces}" ] && return 0 + action "Restoring interface configuration" "${script_interfaces}" + rc=$? + if test $rc = 0; then + level=debug + else + level=err + fi + log="logger -p daemon.$level -t ovs-save" + $log "interface restore script exited with status $rc:" + $log -f "$script_interfaces" +} + +init_restore_scripts () { + script_interfaces=`mktemp` + script_flows=`mktemp` + trap 'rm -f "${script_interfaces}" "${script_flows}"' 0 +} + +force_reload_kmod () { + + if test X"${OVS_VSWITCHD:-yes}" != Xyes; then + log_failure_msg "Reloading of kmod without ovs-vswitchd is an error" + exit 1 + fi + + ifaces=`internal_interfaces` + action "Detected internal interfaces: $ifaces" true + + init_restore_scripts + save_flows_if_required + + # Restart the database first, since a large database may take a + # while to load, and we want to minimize forwarding disruption. + stop_ovsdb + start_ovsdb || return 1 + + stop_forwarding + + if action "Saving interface configuration" save_interfaces; then + : + else + log_warning_msg "Failed to save configuration, not replacing kernel module" + start_forwarding + add_managers + exit 1 + fi + chmod +x "$script_interfaces" + + for dp in `ovs-dpctl dump-dps`; do + action "Removing datapath: $dp" ovs-dpctl del-dp "$dp" + done + + for vport in `awk '/^vport_/ { print $1 }' /proc/modules`; do + action "Removing $vport module" rmmod $vport + done + + if test -e /sys/module/openvswitch; then + action "Removing openvswitch module" rmmod openvswitch + fi + + # Start vswitchd by asking it to wait till flow restore is finished. + flow_restore_wait + start_forwarding || return 1 + + # Restore saved flows and inform vswitchd that we are done. + restore_flows + flow_restore_complete + add_managers + + restore_interfaces + + "$datadir/scripts/ovs-check-dead-ifs" +} + +## ------- ## +## restart ## +## ------- ## + +restart () { + if daemon_is_running ovsdb-server && daemon_is_running ovs-vswitchd; then + init_restore_scripts + if test X"${OVS_VSWITCHD:-yes}" = Xyes; then + save_flows_if_required + fi + fi + + # Restart the database first, since a large database may take a + # while to load, and we want to minimize forwarding disruption. + stop_ovsdb + start_ovsdb || return 1 + + stop_forwarding + + # Start vswitchd by asking it to wait till flow restore is finished. + flow_restore_wait + start_forwarding || return 1 + + # Restore saved flows and inform vswitchd that we are done. + restore_flows + flow_restore_complete + add_managers +} -- 2.14.3 _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev