Configuring Conductor's Static Planner (Last updated: $Date: 2001/10/17 16:46:03 $)

1. Overview

The StaticPlanner is a simple example of a planner that is very useful for debugging and demonstration purposes. The plan, in this case, is a generated from a pre-selected set of adaptors called a plan configuration. The plan configuration specifies which adaptors to put on each node, but the identities of specific nodes to put them on. A plan is generated by matching the first node in the connection with the first node in the configuration, and so on.

Warning: Since the StaticPlanner is intended for debugging and demo purposes, it is not very robust or forgiving, nor is it very user-friendly. Use it at your own risk.

2. Properties

The PlannerClass property (in Conductor.properties) is used to configure which planner Conductor will use. The StaticPlanner is Conductor's default planner.

Several Conductor properties can be used to customize the behavior of the StaticPlanner:

Property Name Type Default Value Description
StaticPlanner.IncludeAllNodes boolean false Normally, the StaticPlanner does not include a node in a plan if no adaptors are to be depoyed on that node. If this property is set to "true", all nodes will be included in the plan.
StaticPlanner.ConfigFile filename ./config/adaptors.cfg The default configuration file. For more information, see Section 3.4
StaticPlanner.ConfigFile.<N> (where <N> is an int) filename (none) The configuration file to use for connections to port <N>. For more information see Section 3.3.

When Conductor is centrally configured or run from an NFS mounted directory, it may be useful to include ${HOSTNAME} in the names of specified configuration files. More information about Conductor properties is available here.

3. Specifying a planning configuration

The configuration used for planning can be specified in several ways. For each connection the StaticPlanner uses the first configuration it finds from the following sources (in the order given):

3.1 Config file specified in planning info

The static planner will look for the attribute UserPrefs.StaticPlanner.configFile in the planning information it receives from the client node. If present, the value for this attribute specifies the name of the file from which to read the configuration. This file is expected to be found on the planner node.

The easiest way to cause this attribute to be set in the planning information is to use the StaticMonitor. A example configuration is available in Conductor/config/UserPrefs.example.StaticPlanner

More information about the proper format for the configuration file can be found in Section 4.

3.2 Config embeded in planning info

The planning configuration can be imbeded directly into the planning information obtained from the client node. The adaptors to deploy on a given node for a given direction of data flow are stored as the value to a single attribute in the planning information. If more than one adaptor is required on a given node, adaptor names (fully qualified class names) should be separated by a space. Adaptors will be deployed on the node in the order specified. An empty value should be used when no adaptors are required.

For adaptors to deploy in the upstream direction, the attribute UserPrefs.StaticPlanner.upConfig.<N> is used, where <N> is replaced by the node number. The first node (client) is number 0. Similarly, for adaptors to deploy in the downstream direction, the attribute UserPrefs.StaticPlanner.downConfig.<N> is used.

For example, consider the following set of adaptors to be deployed on a 4 node network.

	  A      ->      B  C     ->               ->       D
	Client -------- Node 1 --------- Node 2 --------- Server
	         <-       E       <-      F  G     <-       H
The following attribute/value pairs should be delivered in the client's planning information:

Note that if there are more configuration entries than actual nodes in the connection, the extra entries will be ignored. If there are more nodes than entries an error will likely result.

The easiest way to cause these attributes to be set in the planning information is to use the StaticMonitor. A sample StaticMonitor configuration file for specifying a static plan can be found in Conductor/config/UserPrefs.example.StaticPlanner.

3.3 Protocol-specific config file specified in conductor properties

The Conductor property StaticPlanner.ConfigFile.<N> can be used to specify a configuration file to use for particular protocols, where <N> is replaced by the destination port number used by that protocol (eg, 80 for HTTP).

More information about the proper format for the configuration file can be found in Section 4.

3.4 Default config file

The Conductor property StaticPlanner.ConfigFile can be used to specify a default configuration file to use when no other configuration has been specified. The default value for this property is ./adaptors.cfg

More information about the proper format for the configuration file can be found in Section 4.

4. The configuration file format

As described above, the planning configuration for a given connection can be read from a file. Each configuration file specifies the set of adaptors to run on each node in each direction.

Each configuration file consists of two sections. Lines in the first section begin with a plus ('+') and indicate the adaptors to deply in the upstream direction. Each line contains a space-delimeted list of fully-qualified adaptor class names. Lines in the second section begin with a minus ('-') and indicate the adpators to deploy in the downstream direction. The format is the same as the first section. There MUST be the same number of lines in the first and second sections.

For example, consider the following set of adaptors to be deployed on a 4 node network.

	  A      ->      B  C     ->               ->       D
	Client -------- Node 1 --------- Node 2 --------- Server
	         <-       E       <-      F  G     <-       H
The following configuration file could be used to generate the corresponding plan:

Notice that both the upstream and downstream sections of the file sequentially list nodes from client to server. Within a given node, adaptors are listed in the direction of data flow (so, B is listed before C and G is listed before F).

Note that if there are more entries in the configuration than nodes, some adpators will not be deployed. Also, if there are more nodes than entries in the configuration, an error will result.


Conductor is a product of Mark Yarvis (yarvis@fmg.cs.ucla.edu) and the FMG Research Group at UCLA's Department of Computer Science.
Copyright © 2001 The Regents of the University of California. All Rights Reserved.