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

Reply via email to