X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=plnet.py;h=ee3d253f280aa097f5b0762edd9edcd62686acbc;hb=712ca0a3e915adbb8bc539756d0cf8af1d755575;hp=c012067c2ae95be40484deefdccd8ec1a799c4e1;hpb=c69aa1b29cf0e2900681bbd892df2a260f0d491e;p=pyplnet.git diff --git a/plnet.py b/plnet.py index c012067..ee3d253 100755 --- a/plnet.py +++ b/plnet.py @@ -5,12 +5,18 @@ import os import socket import time import tempfile +import errno import sioc import modprobe def InitInterfaces(logger, plc, data, root="", files_only=False, program="NodeManager"): sysconfig = "%s/etc/sysconfig/network-scripts" % root + try: + os.makedirs(sysconfig) + except OSError, e: + if e.errno != errno.EEXIST: + raise e # query running network interfaces devs = sioc.gifconf() @@ -23,6 +29,7 @@ def InitInterfaces(logger, plc, data, root="", files_only=False, program="NodeMa interfaces = {} interface = 1 hostname = data.get('hostname',socket.gethostname()) + gateway = None networks = data['networks'] failedToGetSettings = False for network in networks: @@ -48,14 +55,21 @@ def InitInterfaces(logger, plc, data, root="", files_only=False, program="NodeMa inter['USERCTL']='no' if network['mac']: inter['HWADDR'] = network['mac'] + if network['is_primary']: + inter['PRIMARY']='yes' if network['method'] == "static": inter['BOOTPROTO'] = "static" inter['IPADDR'] = network['ip'] inter['NETMASK'] = network['netmask'] + inter['DNS1'] = network['dns1'] + inter['DNS2'] = network['dns2'] + if network['is_primary']: + gateway = network['gateway'] elif network['method'] == "dhcp": inter['BOOTPROTO'] = "dhcp" + inter['PERSISTENT_DHCLIENT'] = "yes" if network['hostname']: inter['DHCP_HOSTNAME'] = network['hostname'] else: @@ -180,20 +194,27 @@ def InitInterfaces(logger, plc, data, root="", files_only=False, program="NodeMa if deletedSomething: time.sleep(2) - # Process ifcg-$dev changes / additions + # Write network configuration file + networkconf = file("%s/etc/sysconfig/network" % root, "w") + networkconf.write("NETWORKING=yes\nHOSTNAME=%s\n" % hostname) + if gateway is not None: + networkconf.write("GATEWAY=%s\n" % gateway) + networkconf.close() + + # Process ifcfg-$dev changes / additions newdevs = [] for (dev, inter) in interfaces.iteritems(): (fd, tmpnam) = tempfile.mkstemp(dir=sysconfig) f = os.fdopen(fd, "w") - f.write("# Autogenerated by NodeManager/net.py.... do not edit!\n") + f.write("# Autogenerated by pyplnet... do not edit!\n") if 'DRIVER' in inter: f.write("# using %s driver for device %s\n" % (inter['DRIVER'],dev)) - f.write('DEVICE="%s"\n' % dev) + f.write('DEVICE=%s\n' % dev) # print the configuration values for (key, val) in inter.iteritems(): if key not in ('IFNAME','ALIAS','CFGOPTIONS','DRIVER'): - f.write('%s="%s"\n' % (key, val)) + f.write('%s=%s\n' % (key, val)) # print the configuration specific option values (if any) if 'CFGOPTIONS' in inter: