X-Git-Url: http://git.onelab.eu/?p=pyplnet.git;a=blobdiff_plain;f=plnet.py;h=d8f332290c6da5b09227a8cf82b08ebb9c94883b;hp=b46d720778c25447168b96d93e95eaf0f8d96c7c;hb=54741d0818453d1a64f1ce7d82fb6e9fe058956e;hpb=fda2ce4b104f294c1a4f16fae5e9800ce895ce8a 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])