# $Id$
# $HeadURL$
-The PlanetLab Node Manager manages all aspects of PlanetLab node and slice management once the node has been initialized and configured by the Boot Manager. It periodically contacts its management authority for configuration updates. It provides an XML-RPC API for performing local operations on slices.
+The PlanetLab NodeManager manages all aspects of PlanetLab node and slice management once the node has been initialized and configured by the Boot Manager. It periodically contacts its management authority for configuration updates. It provides an XML-RPC API for performing local operations on slices.
Copyright 2008 Princeton University
http://www.planet-lab.org
import logger
import string
import iptables
+import os
def GetSlivers(plc, data):
InitNodeLimit(data)
i2nodes = []
i2nodeids = plc.GetNodeGroups(["Internet2"])[0]['node_ids']
for node in plc.GetInterfaces({"node_id": i2nodeids}, ["ip"]):
+ # Get the IPs
i2nodes.append(node['ip'])
+ # this will create the set if it doesn't already exist
+ # and add IPs that don't exist in the set rather than
+ # just recreateing the set.
bwlimit.exempt_init('Internet2', i2nodes)
+
+ # set the iptables classification rule if it doesnt exist.
+ cmd = '-A POSTROUTING -m set --set Internet2 dst -j CLASSIFY --set-class 0001:2000 --add-mark'
+ rules = []
+ ipt = os.popen("/sbin/iptables-save")
+ for line in ipt.readlines(): rules.append(line.strip(" \n"))
+ ipt.close()
+ if cmd not in rules:
+ logger.verbose("net: Adding iptables rule for Internet2")
+ os.popen("/sbin/iptables -t mangle " + cmd)
def InitNAT(plc, data):
# query running network interfaces
#!/usr/bin/python
+
+#
+# Useful information can be found at https://svn.planet-lab.org/wiki/NodeManager
+#
+
+# Faiyaz Ahmed <faiyaza at cs dot princeton dot edu>
+# Copyright (C) 2008 The Trustees of Princeton University
+
+
"""Node Manager"""
import optparse