The changes look reasonable to me. --Justin
On Jan 23, 2012, at 3:53 PM, Ben Pfaff wrote: > This commit updates the "vif" and "interface-reconfigure" scripts installed > by Open vSwitch on Citrix XenServer with those in XenServer 6.0.0. > > Signed-off-by: Ben Pfaff <b...@nicira.com> > --- > Not tested. > > xenserver/etc_xensource_scripts_vif | 40 +++++++++++++++++++- > .../opt_xensource_libexec_InterfaceReconfigure.py | 7 ++- > .../opt_xensource_libexec_interface-reconfigure | 19 +++++++-- > 3 files changed, 57 insertions(+), 9 deletions(-) > > diff --git a/xenserver/etc_xensource_scripts_vif > b/xenserver/etc_xensource_scripts_vif > index 0625498..78434fb 100755 > --- a/xenserver/etc_xensource_scripts_vif > +++ b/xenserver/etc_xensource_scripts_vif > @@ -150,6 +150,30 @@ remove_from_bridge() > esac > } > > +call_hook_script() { > + local domid=$1 > + local action=$2 > + # Call the VIF hotplug hook if present > + if [ -x /etc/xapi.d/vif-hotplug ]; then > + local vm=$(xenstore-read "/local/domain/$domid/vm" 2>/dev/null) > + if [ $? -eq 0 -a -n "${vm}" ] ; then > + local vm_uuid=$(xenstore-read "$vm/uuid" 2>/dev/null) > + fi > + if [ -n "${vm_uuid}" ] ; then > + logger -t scripts-vif "VM UUID ${vm_uuid}" > + fi > + > + local vif_uuid=$(xenstore-read "${PRIVATE}/vif-uuid" 2>/dev/null) > + if [ -n "${vif_uuid}" ] ; then > + logger -t scripts-vif "VIF UUID ${vif_uuid}" > + fi > + if [ -n "${vif_uuid}" -a -n "${vm_uuid}" ] ; then > + logger -t scripts-vif "Calling VIF hotplug hook for VM > ${vm_uuid}, VIF ${vif_uuid}" > + /etc/xapi.d/vif-hotplug -action "${action}" -vifuuid > "${vif_uuid}" -vmuuid "${vm_uuid}" > + fi > + fi > +} > + > NETWORK_MODE=$(cat /etc/xensource/network.conf) > ACTION=$1 > > @@ -171,8 +195,13 @@ esac > > case ${TYPE} in > vif) > - DOMID=`echo ${XENBUS_PATH} | cut -f 3 -d '/'` > - DEVID=`echo ${XENBUS_PATH} | cut -f 4 -d '/'` > + if [ -z ${XENBUS_PATH} ]; then > + DOMID=$3 > + DEVID=$4 > + else > + DOMID=`echo ${XENBUS_PATH} | cut -f 3 -d '/'` > + DEVID=`echo ${XENBUS_PATH} | cut -f 4 -d '/'` > + fi > dev=vif${DOMID}.${DEVID} > ;; > tap) > @@ -210,6 +239,7 @@ online) > > # xs-xen.pq.hq:91e986b8e49f netback-wait-for-hotplug > xenstore-write > "/local/domain/0/backend/vif/${DOMID}/${DEVID}/hotplug-status" "connected" > + call_hook_script $DOMID "${ACTION}" > fi > ;; > > @@ -222,8 +252,14 @@ add) > remove) > if [ "${TYPE}" = "vif" ] ;then > xenstore-rm "${HOTPLUG}/hotplug" > + call_hook_script $DOMID "${ACTION}" > fi > logger -t scripts-vif "${dev} has been removed" > remove_from_bridge > ;; > + > +move) > + if [ "${TYPE}" = "vif" ] ;then > + add_to_bridge > + fi > esac > diff --git a/xenserver/opt_xensource_libexec_InterfaceReconfigure.py > b/xenserver/opt_xensource_libexec_InterfaceReconfigure.py > index 7a2fe4c..22af3c2 100644 > --- a/xenserver/opt_xensource_libexec_InterfaceReconfigure.py > +++ b/xenserver/opt_xensource_libexec_InterfaceReconfigure.py > @@ -508,9 +508,8 @@ class DatabaseCache(object): > host = > session.xenapi.host.get_by_uuid(inventory['INSTALLATION_UUID']) > > self.__get_pif_records_from_xapi(session, host) > - > - self.__get_tunnel_records_from_xapi(session) > self.__get_pool_records_from_xapi(session) > + self.__get_tunnel_records_from_xapi(session) > self.__get_vlan_records_from_xapi(session) > self.__get_bond_records_from_xapi(session) > self.__get_network_records_from_xapi(session) > @@ -576,9 +575,11 @@ class DatabaseCache(object): > for (ref,rec) in self.__pools.items(): > self.__to_xml(xml, xml.documentElement, _POOL_XML_TAG, ref, rec, > _POOL_ATTRS) > > - f = open(cache_file, 'w') > + temp_file = cache_file + ".%d" % os.getpid() > + f = open(temp_file, 'w') > f.write(xml.toprettyxml()) > f.close() > + os.rename(temp_file, cache_file) > > def get_pif_by_uuid(self, uuid): > pifs = map(lambda (ref,rec): ref, > diff --git a/xenserver/opt_xensource_libexec_interface-reconfigure > b/xenserver/opt_xensource_libexec_interface-reconfigure > index ff4b976..6c6de9f 100755 > --- a/xenserver/opt_xensource_libexec_interface-reconfigure > +++ b/xenserver/opt_xensource_libexec_interface-reconfigure > @@ -50,6 +50,7 @@ import syslog > import traceback > import re > import random > +import syslog > > management_pif = None > > @@ -144,10 +145,11 @@ def netdev_remap_name(pif, already_renamed=[]): > return None > > def rename_netdev(old_name, new_name): > - log("Changing the name of %s to %s" % (old_name, new_name)) > - run_command(['/sbin/ifconfig', old_name, 'down']) > - if not run_command(['/sbin/ip', 'link', 'set', old_name, 'name', > new_name]): > - raise Error("Could not rename %s to %s" % (old_name, new_name)) > + raise Error("Trying to rename %s to %s - This functionality has been > removed" % (old_name, new_name)) > + # log("Changing the name of %s to %s" % (old_name, new_name)) > + # run_command(['/sbin/ifconfig', old_name, 'down']) > + # if not run_command(['/sbin/ip', 'link', 'set', old_name, 'name', > new_name]): > + # raise Error("Could not rename %s to %s" % (old_name, new_name)) > > pifrec = db().get_pif_record(pif) > device = pifrec['device'] > @@ -197,7 +199,11 @@ def ifup(netdev): > """Bring up a network interface""" > if not os.path.exists(root_prefix() + > "/etc/sysconfig/network-scripts/ifcfg-%s" % netdev): > raise Error("ifup: device %s exists but ifcfg-%s does not" % > (netdev,netdev)) > + d = os.getenv("DHCLIENTARGS","") > + if os.path.exists("/etc/firstboot.d/data/firstboot_in_progress"): > + os.putenv("DHCLIENTARGS", d + " -T 240 " ) > run_command(["/sbin/ifup", netdev]) > + os.putenv("DHCLIENTARGS", d ) > > # > # > @@ -269,6 +275,7 @@ def ipdev_open_ifcfg(pif): > f.write("XEMANAGED=yes\n") > f.write("DEVICE=%s\n" % ipdev) > f.write("ONBOOT=no\n") > + f.write("NOZEROCONF=yes\n") > > return f > > @@ -356,6 +363,10 @@ def ipdev_configure_network(pif, dp): > > pifs_on_host = [p for p in db().get_all_pifs() if not p in > pif_get_bond_masters(pif)] > > + # now prune out bond slaves as they are not connected to the IP > + # stack and so cannot be used as gateway or DNS devices. > + pifs_on_host = [ p for p in pifs_on_host if len(pif_get_bond_masters(p)) > == 0] > + > # loop through all the pifs on this host looking for one with > # other-config:peerdns = true, and one with > # other-config:default-route=true > -- > 1.7.2.5 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev