X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=xenserver%2Fetc_xapi.d_plugins_openvswitch-cfg-update;h=6da86d5cda7ebf98a4b3f7f1f0844db1118520ba;hb=e2e744a852da97d86594b6ba4b6efeef57086fcf;hp=42bd09a195772a06c3c524d46067397b0d5e961d;hpb=8085488086c48577deaf26fcc11d1be02a6ee140;p=openvswitch diff --git a/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update b/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update index 42bd09a1..6da86d5c 100755 --- a/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update +++ b/xenserver/etc_xapi.d_plugins_openvswitch-cfg-update @@ -39,6 +39,15 @@ def delete_cacert(): pass def update(session, args): + # Refresh bridge network UUIDs in case this host joined or left a pool. + script = "/opt/xensource/libexec/interface-reconfigure" + try: + retval = subprocess.call([script, "rewrite"]) + if retval != 0: + syslog.syslog("%s exited with status %d" % (script, retval)) + except OSError, e: + syslog.syslog("%s: failed to execute (%s)" % (script, e.strerror)) + pools = session.xenapi.pool.get_all() # We assume there is only ever one pool... if len(pools) == 0: @@ -58,10 +67,18 @@ def update(session, args): currentController = vswitchCurrentController() if controller == "" and currentController != "": delete_cacert() + try: + emergency_reset(session, None) + except: + pass removeControllerCfg() return "Successfully removed controller config" elif controller != currentController: delete_cacert() + try: + emergency_reset(session, None) + except: + pass setControllerCfg(controller) return "Successfully set controller to " + controller else: @@ -110,10 +127,13 @@ def vswitchCfgMod(action_args): [ str(exitcode) , str(action_args) ]) def emergency_reset(session, args): - # This function is just a place holder for testing until the real - # functionality is implemented. - syslog.syslog("openvswitch-cfg-update: emergency_reset called") - return "Need to implement emergency_reset" + cmd = [vsctl, "emer-reset"] + exitcode = subprocess.call(cmd) + if exitcode != 0: + raise XenAPIPlugin.Failure("VSWITCH_EMER_RESET_FAILURE", + [ str(exitcode) ]) + + return "Successfully reset configuration" if __name__ == "__main__": XenAPIPlugin.dispatch({"update": update,