[ovs-dev] [PATCH 3/4] xenserver: Find managers referenced in manager_options column, if any.
Andrew Evans
aevans at nicira.com
Wed Feb 2 08:12:03 UTC 2011
---
.../etc_xapi.d_plugins_openvswitch-cfg-update | 14 ++++++++++++--
..._lib_xsconsole_plugins-base_XSFeatureVSwitch.py | 12 ++++++++++--
...sr_share_openvswitch_scripts_sysconfig.template | 2 +-
3 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update b/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update
index 5189d04..2466750 100755
--- a/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update
+++ b/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update
@@ -128,8 +128,16 @@ def update(session, args):
return "No change to configuration"
def vswitchCurrentController():
- controller = vswitchCfgQuery(["get", "Open_vSwitch",
- ".", "managers"]).strip('[]"')
+ # Manager rows referenced in manager_options column get priority.
+ # We arbitrarily grab the first one.
+ uuid = vswitchCfgQuery(["get", "Open_vSwitch", ".",
+ "manager_options"]).strip('[]').split(', ')[0]
+ if uuid:
+ controller = vswitchCfgQuery(["get", "Manager", uuid, "target"
+ ]).strip('[]"').split()[0]
+ else:
+ controller = vswitchCfgQuery(["get", "Open_vSwitch",
+ ".", "managers"]).strip('[]"')
if controller == "":
return controller
if len(controller) < 4 or controller[0:4] != "ssl:":
@@ -139,12 +147,14 @@ def vswitchCurrentController():
def removeControllerCfg():
vswitchCfgMod(["--", "clear", "Open_vSwitch", ".", "managers",
+ "--", "clear", "Open_vSwitch", ".", "manager_options",
"--", "del-ssl"])
def setControllerCfg(controller):
# /etc/xensource/xapi-ssl.pem is mentioned twice below because it
# contains both the private key and the certificate.
vswitchCfgMod(["--", "clear", "Open_vSwitch", ".", "managers",
+ "--", "clear", "Open_vSwitch", ".", "manager_options",
"--", "del-ssl",
"--", "--bootstrap", "set-ssl",
"/etc/xensource/xapi-ssl.pem",
diff --git a/xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py b/xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py
index 015f4cc..0ad8db3 100644
--- a/xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py
+++ b/xenserver/usr_lib_xsconsole_plugins-base_XSFeatureVSwitch.py
@@ -304,8 +304,16 @@ class XSFeatureVSwitch:
if dbController == "":
dbController = Lang("<None>")
inPane.AddStatusField(Lang("Controller (config)", 20), dbController)
- controller = VSwitchConfig.Get("get Open_vSwitch . managers")
- controller = controller.strip('[]"')
+
+ # Find all controllers referenced by manager_options column, if any.
+ controller = ""
+ for uuid in VSwitchConfig.Get("get Open_vSwitch . manager_options").strip('[]').split(', '):
+ controller += VSwitchConfig.Get("get Manager " + uuid + " target").strip('"') + " "
+ controller = controller.rstrip()
+
+ # Fallback: use legacy managers map.
+ if not controller:
+ controller = VSwitchConfig.Get("get Open_vSwitch . managers").strip('[]"')
if controller == "":
controller = Lang("<None>")
diff --git a/xenserver/usr_share_openvswitch_scripts_sysconfig.template b/xenserver/usr_share_openvswitch_scripts_sysconfig.template
index c639df8..0b356fa 100644
--- a/xenserver/usr_share_openvswitch_scripts_sysconfig.template
+++ b/xenserver/usr_share_openvswitch_scripts_sysconfig.template
@@ -35,7 +35,7 @@
# OVSDB_SERVER_REMOTES: Space-separated list of methods on which to have
# ovsdb-server listen or connect for a JSON-RPC connection.
-# OVSDB_SERVER_REMOTES="punix:/var/run/openvswitch/db.sock db:Open_vSwitch,managers"
+# OVSDB_SERVER_REMOTES="punix:/var/run/openvswitch/db.sock db:Open_vSwitch,managers db:Open_vSwitch,manager_options"
# OVSDB_SERVER_DB: File for which ovsdb-server uses for storage.
# OVSDB_SERVER_DB=/etc/openvswitch/conf.db
--
1.7.2.3
More information about the dev
mailing list