git://git.onelab.eu
/
nodemanager.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Setting tag nodemanager-1.8-37
[nodemanager.git]
/
net.py
diff --git
a/net.py
b/net.py
index
810490c
..
be4e16e
100644
(file)
--- a/
net.py
+++ b/
net.py
@@
-1,6
+1,7
@@
#
# $Id$
#
#
# $Id$
#
+
"""network configuration"""
# system provided modules
"""network configuration"""
# system provided modules
@@
-10,15
+11,20
@@
import os, string, time, socket
import sioc, plnet
# local 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.
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 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:
logger.verbose("*** DISABLING NODE BW LIMITS ***")
bwlimit.stop()
else:
@@
-31,6
+37,8
@@
def GetSlivers(plc, data, config):
def InitNodeLimit(data):
def InitNodeLimit(data):
+ if not 'networks' in data: return
+
# query running network interfaces
devs = sioc.gifconf()
ips = dict(zip(devs.values(), devs.keys()))
# query running network interfaces
devs = sioc.gifconf()
ips = dict(zip(devs.values(), devs.keys()))
@@
-41,9
+49,11
@@
def InitNodeLimit(data):
for network in data['networks']:
# Get interface name preferably from MAC address, falling
# back on IP address.
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']))
dev = ips[network['ip']]
else:
logger.log('%s: no such interface with address %s/%s' % (network['hostname'], network['ip'], network['mac']))
@@
-70,6
+80,8
@@
def InitNodeLimit(data):
# again, or vice-versa.
def InitI2(plc, data):
# 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 = []
if "Internet2" in data['groups']:
logger.log("This is an Internet2 node. Setting rules.")
i2nodes = []
@@
-93,6
+105,8
@@
def InitI2(plc, data):
os.popen("/sbin/iptables -t mangle " + cmd)
def InitNAT(plc, data):
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()))
# query running network interfaces
devs = sioc.gifconf()
ips = dict(zip(devs.values(), devs.keys()))
@@
-104,9
+118,11
@@
def InitNAT(plc, data):
for network in data['networks']:
# Get interface name preferably from MAC address, falling
# back on IP address.
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']))
dev = ips[network['ip']]
else:
logger.log('%s: no such interface with address %s/%s' % (network['hostname'], network['ip'], network['mac']))
@@
-116,7
+132,7
@@
def InitNAT(plc, data):
settings = plc.GetInterfaceTags({'interface_tag_id': network['interface_tag_ids']})
except:
continue
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
for setting in settings:
if setting['category'].upper() != 'FIREWALL':
continue
@@
-139,8
+155,7
@@
def InitNAT(plc, data):
ipt.commit()
def InitInterfaces(plc, data):
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):
plnet.InitInterfaces(logger, plc, data)
def start(options, config):