summaryrefslogtreecommitdiff
path: root/xenserver
diff options
context:
space:
mode:
authorJason Kölker <jason@koelker.net>2015-02-07 06:47:51 +0000
committerBen Pfaff <blp@nicira.com>2015-02-06 23:15:24 -0800
commit032c09ddd1052fc3e23a76418b77214a1a585009 (patch)
tree0017527230ced7f229bd543265dbe81145cd8178 /xenserver
parent9ba4f3c5ceacecf8106a48262beb51946b88ef90 (diff)
downloadopenvswitch-032c09ddd1052fc3e23a76418b77214a1a585009.tar.gz
XenServer: Don't reset on xe-toolstack-restart
With XenServer only 1 manager is configured in the pool, which may not be the first manager returned from `get-manager` as it returns in lexicographical order. Signed-off-by: Jason Kölker <jason@koelker.net> Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'xenserver')
-rwxr-xr-xxenserver/etc_xapi.d_plugins_openvswitch-cfg-update29
1 files changed, 17 insertions, 12 deletions
diff --git a/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update b/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update
index aeaa1e7cd..0668b39d6 100755
--- a/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update
+++ b/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update
@@ -59,10 +59,11 @@ def update(session, args):
raise XenAPIPlugin.Failure('MORE_THAN_ONE_POOL_FOR_HOST', [])
new_controller = False
pool = session.xenapi.pool.get_record(pools[0])
- controller = pool.get('vswitch_controller', '')
+ controller = pool.get('vswitch_controller')
ret_str = ''
- currentController = vswitchCurrentController()
- if controller == '' and currentController != '':
+ currentControllers = vswitchCurrentControllers()
+
+ if not controller and currentControllers:
delete_cacert()
try:
emergency_reset(session, None)
@@ -70,7 +71,7 @@ def update(session, args):
pass
removeControllerCfg()
ret_str += 'Successfully removed controller config. '
- elif controller != currentController:
+ elif controller not in currentControllers:
delete_cacert()
try:
emergency_reset(session, None)
@@ -194,14 +195,18 @@ def update(session, args):
return 'No change to configuration'
-def vswitchCurrentController():
- controller = vswitchCfgQuery(['get-manager'])
- if controller == '':
- return controller
- if len(controller) < 4 or controller[0:4] != 'ssl:':
- return controller
- else:
- return controller.split(':')[1]
+def vswitchCurrentControllers():
+ controllers = vswitchCfgQuery(['get-manager'])
+
+ def parse_controller(controller):
+ if controller.startswith('ssl:'):
+ return controller.split(':')[1]
+
+ return controller.split(':')[0]
+
+ return [parse_controller(controller)
+ for controller in controllers.split('\n')
+ if controller]
def removeControllerCfg():