#
# $Id$
#
+
"""network configuration"""
# system provided modules
import sioc, plnet
# local modules
-import bwlimit, logger, iptables
+import bwlimit, logger, iptables, tools
+
+dev_default = tools.get_default_if()
+
+def start(options, conf):
+ logger.log("net plugin starting up...")
-def GetSlivers(plc, data, config):
+def GetSlivers(data, config, plc):
logger.verbose("net:GetSlivers called.")
InitInterfaces(plc, data) # writes sysconfig files.
- if 'OVERRIDES' in dir(config):
+ if 'OVERRIDES' in dir(config):
if config.OVERRIDES.get('net_max_rate') == '-1':
logger.log("net: Slice and node BW Limits disabled.")
- if len(bwlimit.tc("class show dev eth0")):
+ if len(bwlimit.tc("class show dev %s" % dev_default)):
logger.verbose("*** DISABLING NODE BW LIMITS ***")
bwlimit.stop()
else:
def InitNodeLimit(data):
+ if not 'networks' in data: return
+
# query running network interfaces
devs = sioc.gifconf()
ips = dict(zip(devs.values(), devs.keys()))
for network in data['networks']:
# Get interface name preferably from MAC address, falling
# back on IP address.
- if macs.has_key(network['mac'].lower()):
- dev = macs[network['mac'].lower()]
- elif ips.has_key(network['ip']):
+ hwaddr=network['mac']
+ if hwaddr <> None: hwaddr=hwaddr.lower()
+ if hwaddr in macs:
+ dev = macs[network['mac']]
+ elif network['ip'] in ips:
dev = ips[network['ip']]
else:
logger.log('%s: no such interface with address %s/%s' % (network['hostname'], network['ip'], network['mac']))
# again, or vice-versa.
def InitI2(plc, data):
+ if not 'groups' in data: return
+
if "Internet2" in data['groups']:
logger.log("This is an Internet2 node. Setting rules.")
i2nodes = []
os.popen("/sbin/iptables -t mangle " + cmd)
def InitNAT(plc, data):
+ if not 'networks' in data: return
+
# query running network interfaces
devs = sioc.gifconf()
ips = dict(zip(devs.values(), devs.keys()))
for network in data['networks']:
# Get interface name preferably from MAC address, falling
# back on IP address.
- if macs.has_key(network['mac']):
- dev = macs[network['mac'].lower()]
- elif ips.has_key(network['ip']):
+ hwaddr=network['mac']
+ if hwaddr <> None: hwaddr=hwaddr.lower()
+ if hwaddr in macs:
+ dev = macs[network['mac']]
+ elif network['ip'] in ips:
dev = ips[network['ip']]
else:
logger.log('%s: no such interface with address %s/%s' % (network['hostname'], network['ip'], network['mac']))
settings = plc.GetInterfaceTags({'interface_tag_id': network['interface_tag_ids']})
except:
continue
- # XXX arbitrary names
+
for setting in settings:
if setting['category'].upper() != 'FIREWALL':
continue
ipt.commit()
def InitInterfaces(plc, data):
- if not 'networks' in data:
- return
+ if not 'networks' in data: return
plnet.InitInterfaces(logger, plc, data)
def start(options, config):