X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=net.py;h=9db7f7314261bc246cdd663b9db4ddddefe4a3e2;hb=f211fe036f17f4758df731fc6d8dbf3d64ca96ac;hp=cd71fe94ecdb329ea4f02579d9029e9ffa305bec;hpb=e3eb033d2d04d2705d3222e6560725bb5945084a;p=nodemanager.git diff --git a/net.py b/net.py index cd71fe9..9db7f73 100644 --- a/net.py +++ b/net.py @@ -3,8 +3,13 @@ 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,16 +19,15 @@ 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. - if macs.has_key(network['mac'].lower()): + if macs.has_key(network['mac']): dev = macs[network['mac'].lower()] 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 +50,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