xenserver: Remove support for setting different controllers for datapaths
authorJustin Pettit <jpettit@nicira.com>
Sat, 13 Mar 2010 12:41:20 +0000 (04:41 -0800)
committerJustin Pettit <jpettit@nicira.com>
Sat, 13 Mar 2010 15:21:59 +0000 (07:21 -0800)
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

index 7f49e33a9fc7641bd923fa412617758108757b7c..6e38a802e99089d82ec698a632e606e87581a860 100755 (executable)
@@ -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",