xenserver: Make OVS xsconsole plugin configure management channel
authorJustin Pettit <jpettit@nicira.com>
Sat, 13 Mar 2010 14:11:47 +0000 (06:11 -0800)
committerJustin Pettit <jpettit@nicira.com>
Sat, 13 Mar 2010 15:22:00 +0000 (07:22 -0800)
Previously, the xsconsole plugin configured a single OpenFlow controller
configuration across all bridges.  With the management channel, we can
now have the manager configure the bridges' controllers individually.
This changes the plugin to only set that management IP.

xenserver/etc_xapi.d_plugins_vswitch-cfg-update
xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py

index 6e38a802e99089d82ec698a632e606e87581a860..4cebe85c82831240ad4901bd61c482231654eb84 100755 (executable)
@@ -62,26 +62,27 @@ def update(session, args):
         return "No change to configuration"
 
 def vswitchCurrentController():
-    controller = vswitchCfgQuery("get-controller")
+    controller = vswitchCfgQuery("get Open_vSwitch . managers").strip('[]"')
     if controller == "":
         return controller
     if len(controller) < 4 or controller[0:4] != "ssl:":
         return controller
     else:
-        return controller[4:]
+        return controller.split(':')[1]
 
 def removeControllerCfg():
-    vswitchCfgMod(["--", "del-controller",
+    vswitchCfgMod(["--", "clear", "Open_vSwitch", ".", "managers",
                    "--", "del-ssl"])
 
 def setControllerCfg(controller):
-    vswitchCfgMod(["--", "del-controller",
+    vswitchCfgMod(["--", "clear", "Open_vSwitch", ".", "managers",
                    "--", "del-ssl",
                    "--", "--bootstrap", "set-ssl",
                    "/etc/xensource/xapi-ssl.pem",
                    "/etc/xensource/xapi-ssl.pem",
                    "/etc/ovs-vswitchd.cacert",
-                   "--", "set-controller", "ssl:" + controller])
+                   "--", "set", "Open_vSwitch", ".",
+                   'managers="ssl:' + controller + ':6632"'])
 
 def vswitchCfgQuery(action):
     cmd = [vsctl, "-vANY:console:emer", action]
index 99dd15d8da52bdd5d7ca958c0443b305ee0b108c..6ecf4784f9d9cda8f5f279a638b318266a38a46d 100644 (file)
@@ -79,7 +79,8 @@ class VSwitchConfig:
     @staticmethod
     def Get(action):
         try:
-            output = ShellPipe([vsctl, "-vANY:console:emer", action]).Stdout()
+            arg = [vsctl, "-vANY:console:emer"] + action.split()
+            output = ShellPipe(arg).Stdout()
         except StandardError, e:
             XSLogError("config retrieval error: " + str(e))
             return "<unknown>"
@@ -283,11 +284,13 @@ class XSFeatureVSwitch:
         if dbController == "":
             dbController = Lang("<None>")
         inPane.AddStatusField(Lang("Controller (config)", 20), dbController)
-        controller = VSwitchConfig.Get("get-controller")
+        controller = VSwitchConfig.Get("get Open_vSwitch . managers")
+        controller = controller.strip('[]"')
+
         if controller == "":
             controller = Lang("<None>")
         elif controller[0:4] == "ssl:":
-            controller = controller[4:]
+            controller = controller.split(':')[1]
         inPane.AddStatusField(Lang("Controller (in-use)", 20), controller)
 
         inPane.NewLine()