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. 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.