[packages/xen] - add support for openvswitch - rel 3

baggins baggins at pld-linux.org
Wed Apr 10 14:39:02 CEST 2013


commit 2ea512d8903ddb1fa64ace1667a369304b17308e
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Wed Apr 10 14:38:38 2013 +0200

    - add support for openvswitch
    - rel 3

 vif-openvswitch | 79 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 xen.spec        |  5 +++-
 2 files changed, 83 insertions(+), 1 deletion(-)
---
diff --git a/xen.spec b/xen.spec
index 287ab6b..d3a7fd0 100644
--- a/xen.spec
+++ b/xen.spec
@@ -30,7 +30,7 @@ Summary:	Xen - a virtual machine monitor
 Summary(pl.UTF-8):	Xen - monitor maszyny wirtualnej
 Name:		xen
 Version:	4.2.1
-Release:	2
+Release:	3
 License:	GPL v2, interface parts on BSD-like
 Group:		Applications/System
 Source0:	http://bits.xensource.com/oss-xen/release/%{version}/%{name}-%{version}.tar.gz
@@ -75,6 +75,7 @@ Source55:	xen.logrotate
 Source56:	xen.tmpfiles
 Source57:	xen.cfg
 Source58:	xen.efi-boot-update
+Source59:	vif-openvswitch
 Patch0:		%{name}-python_scripts.patch
 Patch1:		%{name}-symbols.patch
 Patch2:		%{name}-curses.patch
@@ -467,6 +468,8 @@ sed -e's;@libdir@;%{_libdir};g' -e's;@target_cpu@;%{_target_cpu};g' \
 
 mv $RPM_BUILD_ROOT/etc/xen/{x{m,l}example*,examples}
 
+install %{SOURCE59} $RPM_BUILD_ROOT%{_sysconfdir}/xen/scripts/vif-openvswitch
+
 # for %%doc
 install -d _doc
 for tool in blktap blktap2 pygrub xenmon ; do
diff --git a/vif-openvswitch b/vif-openvswitch
new file mode 100755
index 0000000..142b154
--- /dev/null
+++ b/vif-openvswitch
@@ -0,0 +1,79 @@
+#!/bin/bash
+#============================================================================
+# ${XEN_SCRIPT_DIR}/vif-openvswitch
+#
+# Script for configuring a vif using Open vSwitch.
+#
+# Usage:
+# vif-openvswitch (add|remove|online|offline)
+#
+# Environment vars:
+# vif         vif interface name (required).
+# XENBUS_PATH path to this device's details in the XenStore (required).
+#
+# Read from the store:
+# bridge  bridge to add the vif to (optional).  Defaults to searching for the
+#         bridge itself.
+#
+# up:
+# Enslaves the vif interface to the bridge.
+#
+# down:
+# Removes the vif interface from the bridge.
+#============================================================================
+
+dir=$(dirname "$0")
+. "$dir/vif-common.sh"
+
+bridge=${bridge:-}
+bridge=$(xenstore_read_default "$XENBUS_PATH/bridge" "$bridge")
+
+if [ -z "${bridge}" ]; then
+	bridge=$(ovs-vsctl list-br | head -n 1)
+	if [ -z "$bridge" ]; then
+		fatal "Could not find bridge, and none was specified"
+	fi
+fi
+
+tag=${tag:-}
+
+# Domain on VLAN tagged bridge?
+if ! ovs-vsctl br-exists ${bridge}; then
+	if [[ $bridge =~ \.[[:digit:]]{1,4}$ ]]; then
+		tag=${bridge##*.}
+		bridge=${bridge%.[0-9]*}
+	else
+		fatal "Could not find bridge device ${bridge}"
+	fi
+fi
+
+if ! ovs-vsctl br-exists ${bridge}; then
+	fatal "Could not find bridge device ${bridge}"
+fi
+
+case "$command" in
+  online|add)
+	ip link set dev "${vif}" up
+	if [ -z $tag ]; then
+		ovs-vsctl -- --may-exist add-port ${bridge} ${vif}
+	else
+		ovs-vsctl -- --may-exist add-port ${bridge} ${vif} tag=${tag}
+	fi
+	;;
+  offline)
+	do_without_error ovs-vsctl -- --if-exists del-port ${bridge} ${vif}
+	do_without_error ip link set dev "${vif}" down
+	;;
+esac
+
+call_hooks vif post
+
+if [ -z "${tag}" ]; then
+	log debug "Successful vif-openvswitch $command for ${vif}, bridge ${bridge}."
+else
+	log debug "Successful vif-openvswitch $command for ${vif}, bridge ${bridge}, tag ${tag}."
+fi
+
+if [ "$command" == "online" ]; then
+	success
+fi
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/xen.git/commitdiff/2ea512d8903ddb1fa64ace1667a369304b17308e



More information about the pld-cvs-commit mailing list