CODE: A Framework for Control and Observation in Distributed Environments
Overview
CODE is a software framework for control and observation in
distributed environments. The basic functionality of the framework
allows a user to observe a distributed set of resources, services, and
applications. A user can also use the framework to manage distributed
resources, services, and applications. The components that allow
measurements to be made and actions to be performed are modular and a
small set are provided with the framework. Users can also write their
own measurement and action components or use ones that are provide by
3rd parties.
Architecture
The architecture of the CODE framework is shown below.

The main components of the architecture are Observers, Controllers,
Managers, and Registries. An Observer makes observations from a
computer system. These observations are about properties that are
measurable from the computer system, but may not describe the computer
system itself. An Observer implements the (Event) Producer Interface
which allows (Event) Consumers to query for which events are
available, subscribe for events, and modify subscriptions. An Observer
performs measurements using Sensors. Each Sensor generates one or more
events and can be asked what events it provides and what input is
needed to generate those events. Sensors can be written by anyone but
CODE comes with a small set of sensors already implemented. Finally,
an Observer contains they are controlled by a Sensor Manager. The
Sensor Manager executes Sensors whenever needed based on the currently
active subscriptions and sends the resulting events to the Consumers
who want to receive them.
A Controller implements the Actor Interface which allows clients to
request that actions be performed. A Controller performs actions using
Actuators. Each Actuator provides one or more actions and can be asked
what actions it provides and what input is needed to perform those
actions. The Actuator Manager executes Actuators based on requests
received by the Controller.
Implementation
CODE is currently implemented in Java and has been tested on Linux,
Solaris, Irix, and MacOS X. The framework supports authentication and
authorization based on host name and X.509 identity. CODE also
supports the Grid Security Infrastructure (GSI) and allows clients to
delegate their identity to servers. This allows a user to ask that an
observation or action on a remote computer system be performed as the
user. CODE clients and servers communicate using an XML encoding of
data sent over UDP, TCP, or the GSI variant of SSL/TLS. In the near
future, CODE will be enhanced so that its services can also be
accessed as web or grid services.
CODE is available under version 1.1 of the NASA Open Source Usage
Agreement and various versions are available on the download page.
|
|