# Mark Huang <mlhuang@cs.princeton.edu>
# Copyright (C) 2006 The Trustees of Princeton University
#
-# $Id: db-config 7454 2007-12-11 18:55:00Z faiyaza $
+# $Id$
# $HeadURL$
from plc_config import PLCConfiguration
import sys
+import resource
def main():
cfg = PLCConfiguration()
# YUM configuration
{'enabled': True,
- 'source': 'PlanetLabConf/yum.conf.php?gpgcheck=1',
+ 'source': 'PlanetLabConf/f8/yum.conf',
'dest': '/etc/yum.conf',
- 'file_permissions': '644',
- 'file_owner': 'root',
- 'file_group': 'root',
- 'preinstall_cmd': '',
- 'postinstall_cmd': '',
- 'error_cmd': '',
+ 'file_permissions': '644', 'file_owner': 'root', 'file_group': 'root',
+ 'preinstall_cmd': '', 'postinstall_cmd': '', 'error_cmd': '',
+ 'ignore_cmd_errors': False,
+ 'always_update': False},
+ {'enabled': True,
+ 'source': 'PlanetLabConf/myplc.repo.php?gpgcheck=1',
+ 'dest': '/etc/yum.myplc.d/myplc.repo',
+ 'file_permissions': '644', 'file_owner': 'root', 'file_group': 'root',
+ 'preinstall_cmd': '', 'postinstall_cmd': '', 'error_cmd': '',
'ignore_cmd_errors': False,
'always_update': False},
+ {'enabled': True,
+ 'source': 'PlanetLabConf/f8/yum.myplc.d/fedora.repo',
+ 'dest': '/etc/yum.myplc.d/fedora.repo',
+ 'file_permissions': '644', 'file_owner': 'root', 'file_group': 'root',
+ 'preinstall_cmd': '', 'postinstall_cmd': '', 'error_cmd': '',
+ 'ignore_cmd_errors': False,
+ 'always_update': False},
+ {'enabled': True,
+ 'source': 'PlanetLabConf/f8/yum.myplc.d/fedora-updates.repo',
+ 'dest': '/etc/yum.myplc.d/fedora-updates.repo',
+ 'file_permissions': '644', 'file_owner': 'root', 'file_group': 'root',
+ 'preinstall_cmd': '', 'postinstall_cmd': '', 'error_cmd': '',
+ 'ignore_cmd_errors': False,
+ 'always_update': False},
+
{'enabled': True,
'source': 'PlanetLabConf/delete-rpm-list-production',
'dest': '/etc/planetlab/delete-rpm-list',
'ignore_cmd_errors': False,
'always_update': False},
- # XXX Required for old Node Manager
- # Proper configuration
- {'enabled': True,
- 'source': 'PlanetLabConf/propd.conf',
- 'dest': '/etc/proper/propd.conf',
- 'file_permissions': '644',
- 'file_owner': 'root',
- 'file_group': 'root',
- 'preinstall_cmd': '',
- 'postinstall_cmd': '/etc/init.d/proper restart',
- 'error_cmd': '',
- 'ignore_cmd_errors': True,
- 'always_update': False},
-
- # XXX Required for old Node Manager
- # Bandwidth cap
- {'enabled': True,
- 'source': 'PlanetLabConf/bwlimit.php',
- 'dest': '/etc/planetlab/bwcap',
- 'file_permissions': '644',
- 'file_owner': 'root',
- 'file_group': 'root',
- 'preinstall_cmd': '',
- 'postinstall_cmd': '',
- 'error_cmd': '',
- 'ignore_cmd_errors': True,
- 'always_update': False},
-
# Proxy ARP setup
{'enabled': True,
'source': 'PlanetLabConf/proxies.php',
'always_update': False},
# Firewall configuration
- {'enabled': True,
- 'source': 'PlanetLabConf/iptables',
- 'dest': '/etc/sysconfig/iptables',
- 'file_permissions': '600',
- 'file_owner': 'root',
- 'file_group': 'root',
- 'preinstall_cmd': '',
- 'postinstall_cmd': '',
- 'error_cmd': '',
- 'ignore_cmd_errors': False,
- 'always_update': False},
{'enabled': True,
'source': 'PlanetLabConf/blacklist.php',
'dest': '/etc/planetlab/blacklist',
# sudo configuration
{'enabled': True,
- 'source': 'PlanetLabConf/sudoers',
+ 'source': 'PlanetLabConf/sudoers.php',
'dest': '/etc/sudoers',
'file_permissions': '440',
'file_owner': 'root',
# CoDemux
{'name': "codemux",
- 'description': "Demux HTTP between slices using localhost ports. Value in the form 'host, localhost port'."
- 'min_role_id': 10}
+ 'description': "Demux HTTP between slices using localhost ports. Value in the form 'host, localhost port'.",
+ 'min_role_id': 10},
+
+ # Delegation
+ {'name': "delegations",
+ 'description': "Comma-seperated list of slices to give delegation authority to.",
+ 'min_role_id': 10},
]
+ # add in the platform supported rlimits to the default_attribute_types
+ for entry in resource.__dict__.keys() + ["VLIMIT_OPENFD"]:
+ if entry.find("LIMIT_")==1:
+ rlim = entry[len("RLIMIT_"):]
+ rlim = rlim.lower()
+ for ty in ("min","soft","hard"):
+ attribute = {
+ 'name': "%s_%s"%(rlim,ty),
+ 'description': "Per sliver RLIMIT %s_%s."%(rlim,ty),
+ 'min_role_id': 10 #admin
+ }
+ default_attribute_types.append(attribute)
+
# Get list of existing attribute types
attribute_types = GetSliceAttributeTypes()
attribute_types = [attribute_type['name'] for attribute_type in attribute_types]
file = open(root + "/" + f, "ro")
default_initscripts.append({"name": plc['slice_prefix'] + "_" + f,
"enabled": True,
- "script": file.read()})
+ "script": file.read().replace("@SITE@", url).replace("@PREFIX@", plc['slice_prefix'])})
file.close()
# Get list of existing initscripts
'name' : "ifname",
'description': "Set interface name, instead of eth0 or the like",
'min_role_id' : 40},
- {'category' : "general",
- 'name' : "driver",
- 'description': "Use this to specify an alternate driver",
- 'min_role_id' : 40 },
- {'category' : "general",
+ {'category' : "Multihome",
'name' : "alias",
- 'description': "Allows to reuse an interface as eth0:alias",
+ 'description': "Specifies that the network is used for multihoming",
'min_role_id' : 40},
{'category' : "hidden",
default_slices = [
# PlanetFlow
{'name': plc['slice_prefix'] + "_netflow",
- 'description': "PlanetFlow Traffic Auditing Service",
+ 'description': "PlanetFlow Traffic Auditing Service. Logs, captured in the root context using fprobe-ulogd, are stored in a directory in the root context which is bind mounted to the planetflow slice. The Planetflow Central service then periodically rsyncs these logs from the planetflow slice for aggregation.",
'url': url,
'instantiation': "plc-instantiated",
# Renew forever (minus one day, work around date conversion weirdness)
- 'expires': sys.maxint - (60 * 60 * 24),
+ 'expires': 0x7fffffff - (60 * 60 * 24),
'attributes': [('system', "1"),
('vref', "planetflow"),
- ('proper_op', "open file=/etc/passwd, flags=r"),
- ('proper_op', "create_socket"),
- ('proper_op', "bind_socket")]},
+ ('vsys', "pfmount")]},
# Sirius
{'name': plc['slice_prefix'] + "_sirius",
'description': 'The Sirius Calendar Service.\n\nSirius provides system-wide reservations of 25% CPU and 2Mb/s outgoing\nbandwidth. Sign up for hour-long slots using the Web GUI at the\nPlanetLab website.\n\nThis slice should not generate traffic external to PlanetLab.\n',
- 'url': url,
+ 'url': url + "db/sirius/index.php",
'instantiation': "plc-instantiated",
# Renew forever (minus one day, work around date conversion weirdness)
- 'expires': sys.maxint - (60 * 60 * 24),
+ 'expires': 0x7fffffff - (60 * 60 * 24),
'attributes': [('system', "1"),
('net_min_rate', "2000"),
('cpu_pct', "25"),
The most common reason for authentication failure is that the
authentication key stored in the node configuration file, does not
-match the key on record.
+match the key stored in our database. These keys must match in order to
+authenticate the node successfully.
-There are two possible steps to resolve the problem.
+Each time the configuration file is downloaded, either as part of an All-in-One
+BootImage or by downloading the plnode.txt file, the authentication key is
+RECREATED. So, which ever file was downloaded most recently is the one we
+have in our database. Often, users will download both the All-in-One image as
+well as the plnode.txt file, and inadvertently break the boot image.
-1. If you have used an All-in-one BootCD that includes the plnode.txt file,
- then please check your machine for any old boot media, either in the
- floppy drive, or on a USB stick. It is likely that an old configuration
- is being used instead of the new configuration stored on the BootCD.
-Or,
-2. If you are using Generic BootCD image, then regenerate the node
- configuration file by visiting:
-
- https://%(PLC_WWW_HOST)s:%(PLC_WWW_SSL_PORT)d/db/nodes/?id=%(node_id)d
-
- Under 'Download', follow the 'Download plnode.txt file for %(hostname)s'
- option, and save the downloaded file as plnode.txt on either a floppy
- disk or a USB flash drive. Be sure the 'Boot State' is set to 'Boot',
- and, then reboot the node.
+To repair this problem, simply download your All-in-One BootImage again, and
+copy it to the appropriate read-only boot media (write-protected USB or
+CD-ROM).
If you have already performed this step and are still receiving this
message, please reply so that we can help investigate the problem.
for ptype in protocol_types:
AddPCUProtocolType(id, ptype)
+ # Run local db-config snippets
+ files = []
+ dir = "/etc/planetlab/db-config.d"
+ try:
+ files = os.listdir(dir)
+ except:
+ pass
+
+ for file in files:
+ if (file.endswith(".bak") or file.endswith("~") or
+ file.endswith(".rpmsave") or file.endswith(".rpmnew") or
+ file.endswith(".orig")):
+ continue
+ execfile(os.path.join(dir, file))
+
if __name__ == '__main__':
main()