In an effort to make PlanetLab easier to use, tha PlanetLab Application Manager is designed to help deploy, monitor, and run applications on PlanetLab. The package gives you the ability to centrally manage, install, upgrade, start, stop, and monitor of applications on a PlanetLab slice. While there are many tools to help install nodes, this package also focuses on monitoring and controlling an installed application.
There are two major components, the server-side and the client-side. The server-side requires access to a PostgreSQL database (with a little work, you could change it to MySQL) and a PHP enabled web server. The primary user interface is via the web. The client-side scripts are all shell scripts that run under bash. The server-side requires little configuration once the pre-requisite software is installed. Unfortunately the client-side shell scripts are more complicated since they require customization.

Installation and customization instructions are included in READMEs in the tar files. This page describes the logical operation of the system, i.e. the rules it enforces/follows, and how to use the web interface
If you would like to use our server-side installation (on appmanager.berkeley.intel-research.net) please contact me at huebsch@cs.berkeley.edu. Please note that we may stop supporting our server-side installation at any time and it comes with zero guarantees.
You can view the status of a number of applications hosted on our server-side implementation. Our server is located at http://appmanager.berkeley.intel-research.net/plcontrol/. This should give you an idea on what the software can do.
To help us understand who is using PIER please complete the following questions (truthfully!):
The server scripts require a web server with PHP to operate! A README file in each download includes instructions for installation and configuration.
Client operation on nodes centers around one script, statusCheck.sh. In the latest release the script will run as a daemon, however it should be executed periodically (by CRON) on each PlanetLab node you are using. It is safe to start multiple instances of the script, all but one will automatically exit. The script is intentionally killed by the install scripts so that it, too, can be upgraded. The script will perform one transaction will the server, it reports its current status and receives instructions on what it should do every so often (as determined by the server) or whenever the local status changes (i.e. the application dies or the build changes).
A node (client) can report its status as either online or offline (There is also states for starting, stopping, and restarting but these are not commonly used. The server can instruct it to go online, offline, hold its current status, or restart. The server can also send parameters which should be passed to the application when starting. If the client can not contact the server, it will act the same as a hold command and try again later.
A second important client script is used for installing nodes. That script will contact the server and retrieve one IP address at a time for a node that requires installation. Multiple instances of the installation script can run simultaneously from one or many machines. Installation includes rsync'ing a directory, setting up crond to start, and installing a cron job for the status script described above.
For more details on using and configuring the client-side scripts included, see the README in the client download.
Most of the node control can be performed through the web interface powered by the server. The server handles the following tasks.
List of PlanetLab Nodes: The server must maintain an accurate list of nodes available on PlanetLab. There are two convenience functions for this purpose:
Dynamic Slice Control: For each application there is a list of nodes being used. In order to actually use the nodes, you must assign those nodes to your slice via the dynamic slice control tools on PlanetLab. The server can automatically do this for you through the PlanetLab's XML-RPC interface. You must supply your clear-text PlanetLab Web site password to use this functionality. The password is NEVER displayed on the website no matter who you are, but is stored in clear-text in the database.
Software Installation: The server does not directly perform any installations. Instead when a node is due for installation, its IP will be handed out to a client script. The following rules are used to decide whether a node requires installation:
Controlling Applications & State of Nodes: Nodes are given instructions every time they contact the server to report their status (Call Home), usually every 5-30 minutes. When they report their status, the database will record the current state (online, offline, etc.) and the build number reported by the node. Users can adjust how often a node calls home through the web interface. It is suggested that during normal operation, you use a call home delay around 20-30 minutes. If you are doing active developement and need to turn nodes on and off with small delays, then a shorter call home delay is appropriate. Regardless of the call home delay, nodes will report their status anytime it changes (up to once a minute using the predefined values). Nodes that do not report within the No Response Interval from when they were expected (last time they called home + call home delay) are considered unresponsive which can indicate they are overloaded or down. If the node does not report within the Error Interval after the expected contact time, the node is considered down.
After recording the current state, the database will then send the node instructions. This includes the requested state, a delay before implementing the change, parameters to pass to the start script if appropriate, and when to next call home. The requested states can be:
For more details on using and configuring the server-side scripts included, see the README in the server download.
There currently are no FAQ questions. I'm sure with time this will change. Email questions to huebsch@cs.berkeley.edu if you have any unanswered questions.