From: smbaker Date: Thu, 3 Jan 2013 17:45:11 +0000 (-0800) Subject: check to make sure openvswitch is running before configuring ovs_bridge X-Git-Tag: pyplnet-4.3-16~2 X-Git-Url: http://git.onelab.eu/?p=pyplnet.git;a=commitdiff_plain;h=54741d0818453d1a64f1ce7d82fb6e9fe058956e check to make sure openvswitch is running before configuring ovs_bridge --- diff --git a/plnet.py b/plnet.py old mode 100755 new mode 100644 index b46d720..d8f3322 --- a/plnet.py +++ b/plnet.py @@ -13,6 +13,20 @@ import modprobe global version version = 4.3 +def ovs_check(logger): + """ Return True if openvswitch is running, False otherwise. Try restarting + it once. + """ + rc = os.system("service openvswitch status") + if rc!=0: + logger.log("net: restarting openvswitch") + rc = os.system("service openvswitch restart") + rc = os.system("service openvswitch status") + if rc!=0: + logger.log("net: failed to restart openvswitch") + return False + return True + def InitInterfaces(logger, plc, data, root="", files_only=False, program="NodeManager"): global version @@ -127,9 +141,14 @@ def InitInterfaces(logger, plc, data, root="", files_only=False, program="NodeMa elif settingname in [ 'BRIDGE' ]: details['BRIDGE'] = setting['value'] elif settingname in [ 'OVS_BRIDGE' ]: - details['OVS_BRIDGE'] = setting['value'] - details['TYPE'] = "OVSPort" - details['DEVICETYPE'] = "ovs" + # If openvswitch isn't running, then we'll lose network + # connectivity when we reconfigure eth0. + if ovs_check(logger): + details['OVS_BRIDGE'] = setting['value'] + details['TYPE'] = "OVSPort" + details['DEVICETYPE'] = "ovs" + else: + logger.log("net:InitInterfaces ERROR: OVS_BRIDGE specified, yet ovs is not running") else: logger.log("net:InitInterfaces WARNING: ignored setting named %s"%setting[name_key])