text-based alphabetical index Skip to content
StaffDirectory Search
Home
AboutNAS
ResearchNTechnology
CurrentResearch
PapersNReports
Software
OpenSource
CODE
CODE Overview
CODE Downloads
CODE Documentation
CODE Publications
CODE Contributors
CODE Related Work
download instructions
SoftwareDescription
SelectSoftware
AuthorizedLogin
SampleDatasets
UserServices
ContactUs
Feedback
Sitemap
Help

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 CODE Architecture

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.

Curator: Warren W. Smith
Last Update: March 17, 2004
NASA Official: Tony Lisotta