X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net.py;h=25f101e99735fcf392bd5129cfe6e8fa282abf80;hb=5697cb0795d8b4d44b0f65042ae9c6463a7bd681;hp=1a6ec3527128717b8bf20e22cc2f6c5724f45261;hpb=1e0ebd0efc059b6a0ce82ae7754205e95b0b7518;p=nodemanager.git diff --git a/net.py b/net.py index 1a6ec35..25f101e 100644 --- a/net.py +++ b/net.py @@ -1,10 +1,18 @@ +# +# +# """network configuration""" import sioc import bwlimit import logger +import string -def GetSlivers(data): +def GetSlivers(plc, data): + InitNodeLimit(data) + InitI2(plc, data) + +def InitNodeLimit(data): # query running network interfaces devs = sioc.gifconf() ips = dict(zip(devs.values(), devs.keys())) @@ -14,7 +22,6 @@ def GetSlivers(data): # XXX Exempt Internet2 destinations from node bwlimits # bwlimit.exempt_init('Internet2', internet2_ips) - for network in data['networks']: # Get interface name preferably from MAC address, falling # back on IP address. @@ -23,7 +30,7 @@ def GetSlivers(data): elif ips.has_key(network['ip']): dev = ips[network['ip']] else: - logger.log('%s: no such interface with address %s/%s' % (self.name, network['ip'], network['mac'])) + logger.log('%s: no such interface with address %s/%s' % (network['hostname'], network['ip'], network['mac'])) continue # Get current node cap @@ -46,5 +53,14 @@ def GetSlivers(data): # some previously invalid sliver bwlimit is now valid # again, or vice-versa. +def InitI2(plc, data): + if "Internet2" in data['groups']: + logger.log("This is an Internet2 node. Setting rules.") + i2nodes = [] + i2nodeids = plc.GetNodeGroups(["Internet2"])[0]['node_ids'] + for node in plc.GetNodeNetworks({"node_id": i2nodeids}, ["ip"]): + i2nodes.append(node['ip']) + bwlimit.exempt_init('Internet2', i2nodes) + def start(options, config): pass