self.hostsInPool = 0
self.hostsUpdated = 0
+ self.xs_version = data.host.software_version.product_version('')
pool = data.GetPoolForThisHost()
if pool is not None:
- self.controller = pool.get("other_config", {}).get("vSwitchController", "")
+ if self.xs_version == "5.5.0":
+ self.controller = pool.get("other_config", {}).get("vSwitchController", "")
+ else:
+ self.controller = pool.get("vswitch_controller", "")
else:
self.controller = ""
def SetController(self, ip):
self.hostsInPool = 0
self.hostsUpdated = 0
- Task.Sync(lambda s: self._modifyPoolConfig(s, "vSwitchController", ip))
+ Task.Sync(lambda s: self._modifyPoolConfig(s, ip or ""))
# Should be done asynchronously, maybe with an external script?
Task.Sync(lambda s: self._updateActiveServers(s))
- def _modifyPoolConfig(self, session, key, value):
+ def _modifyPoolConfig(self, session, value):
"""Modify pool configuration.
- If value == None then delete key, otherwise set key to value."""
+ If value == "" then delete configuration, otherwise set to value.
+ """
pools = session.xenapi.pool.get_all()
# We assume there is only ever one pool...
if len(pools) == 0:
if len(pools) > 1:
XSLogFatal(Lang("More than one pool for host."))
return
- session.xenapi.pool.remove_from_other_config(pools[0], key)
- if value != None:
- session.xenapi.pool.add_to_other_config(pools[0], key, value)
+ if self.xs_version == "5.5.0":
+ key = "vSwitchController"
+ session.xenapi.pool.remove_from_other_config(pools[0], key)
+ if value != None:
+ session.xenapi.pool.add_to_other_config(pools[0], key, value)
+ else:
+ session.xenapi.pool.set_vswitch_controller(value)
Data.Inst().Update()
def _updateActiveServers(self, session):
@classmethod
def StatusUpdateHandler(cls, inPane):
data = Data.Inst()
+ xs_version = data.host.software_version.product_version('')
inPane.AddTitleField(Lang("Open vSwitch"))
pool = data.GetPoolForThisHost()
if pool is not None:
- dbController = pool.get("other_config", {}).get("vSwitchController", "")
+ if (xs_version == "5.5.0"):
+ dbController = pool.get("other_config", {}).get("vSwitchController", "")
+ else:
+ dbController = pool.get("vswitch_controller", "")
else:
dbController = ""
VSwitchService.Inst("openvswitch", "ovsdb-server").status())
# Only XenServer 5.5.0 runs ovs-brcompatd
- xs_version = data.host.software_version.product_version('')
if (xs_version == "5.5.0"):
inPane.AddStatusField(Lang("ovs-brcompatd status", 20),
VSwitchService.Inst("openvswitch", "ovs-brcompatd").status())