[ovs-dev] [PATCH 1/2] xenserver: Remove support for setting different controllers for datapaths

Justin Pettit jpettit at nicira.com
Fri Mar 19 06:49:46 UTC 2010


Ben approved of this change out of band.  I pushed it.

--Justin


On Mar 13, 2010, at 6:20 AM, Justin Pettit wrote:

> A hack was put in a while back to support setting different controllers for
> different datapaths by defining a "for-bridges" value in the
> "vSwitchController" key.  It is no longer necessary to do that with the
> management protocol, since the manager can directly set controllers for
> each datapath.
> ---
> xenserver/etc_xapi.d_plugins_vswitch-cfg-update |   80 -----------------------
> 1 files changed, 0 insertions(+), 80 deletions(-)
> 
> diff --git a/xenserver/etc_xapi.d_plugins_vswitch-cfg-update b/xenserver/etc_xapi.d_plugins_vswitch-cfg-update
> index 7f49e33..6e38a80 100755
> --- a/xenserver/etc_xapi.d_plugins_vswitch-cfg-update
> +++ b/xenserver/etc_xapi.d_plugins_vswitch-cfg-update
> @@ -49,23 +49,6 @@ def update(session, args):
>         controller = pool["other_config"]["vSwitchController"]
>     except KeyError, e:
>         controller = ""
> -    if controller == "do-not-update":
> -        return "XAPI key set to do-not-update"
> -    if controller.startswith("for-bridges|"):
> -        l = controller.split("|")[1:]
> -        for netctrl in l:
> -            xapiNet = session.xenapi.network
> -            n, t = netctrl.split("=")
> -            blist = xapiNet.get_by_name_label(n)
> -            if len(blist) == 0:
> -                # If there is no bridge for the network, just keep
> -                # going so we bring up as much as possible.
> -                continue
> -            elif len(blist) > 1:
> -                raise XenAPIPlugin.Failure("TOO_MANY_MATCHING_NETWORKS", [n,blist])
> -            b = xapiNet.get_bridge(blist[0])
> -            setBrControllerCfg(b, t)
> -        return "Completed setting controllers on specific bridges"
>     currentController = vswitchCurrentController()
>     if controller == "" and currentController != "":
>         delete_cacert()
> @@ -91,69 +74,6 @@ def removeControllerCfg():
>     vswitchCfgMod(["--", "del-controller",
>                    "--", "del-ssl"])
> 
> -def setBrControllerCfg(br, target):
> -    # Terrible hack... When this is run at boot the required bridges
> -    # may not be present.  So, we fork a process for each bridge that
> -    # needs to be set which sits around in the background and updates
> -    # it when it becomes available, finally timing out after a long
> -    # interval if it never becomes available.
> -    #
> -    # The right way to do this is to hook the bridge creation somehow
> -    # but I don't believe this is possible in XenServer 5.5 without
> -    # either listening to XAPI events or writing it in C code in
> -    # brcompatd.
> -    import time
> -    import syslog
> -    import resource
> -
> -    p = os.fork()
> -    if p != 0:
> -        return
> -
> -    os.setsid()
> -    p = os.fork()
> -    if p != 0:
> -        sys.exit(0)
> -
> -    os.chdir("/")
> -    os.umask(0)
> -    maxfd = resource.getrlimit(resource.RLIMIT_NOFILE)[1]
> -    if maxfd == resource.RLIM_INFINITY:
> -        maxfd = 1024
> -    for fd in range(0, maxfd):
> -        try:
> -            os.close(fd)
> -        except OSError:
> -            pass
> -    os.open("/dev/null", os.O_RDWR)
> -    os.dup2(0, 1)
> -    os.dup2(0, 2)
> -
> -    syslog.openlog("vswitch-cfg-update", syslog.LOG_PID)
> -    syslog.syslog(syslog.LOG_INFO,
> -                  "Started background process waiting on bridge %s" % (br,))
> -
> -    count = 0
> -    error = None
> -    sleep_time = 10
> -    while count < 60:
> -        count += 1
> -        try:
> -            vswitchCfgMod(["--", "del-controller", br,
> -                           "--", "set-controller", br, target,
> -                           "--", "set-fail-mode", br, "secure"])
> -        except XenAPIPlugin.Failure, e:
> -            error = e
> -            syslog.syslog(syslog.LOG_INFO,
> -                          "Attempt to set br %s controller failed" % (br,))
> -            time.sleep(sleep_time)
> -            continue
> -        syslog.syslog(syslog.LOG_INFO,
> -                      "Successfully set br %s controller to %s" % (br, repr(target)))
> -        return
> -    syslog.syslog(syslog.LOG_ERR,
> -                  "Giving up on setting br %s controller" % (br,))
> -
> def setControllerCfg(controller):
>     vswitchCfgMod(["--", "del-controller",
>                    "--", "del-ssl",
> -- 
> 1.6.5.5
> 
> 
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev_openvswitch.org





More information about the dev mailing list