Cougaar Configuration Manager (CCM)


Overview

The Cougaar Configuration Manager (http://cougaar.org/projects/ccm/) is a tool for visualizating, monitoring and controlling Cougaar societies.  The architecture is hierarchal in nature so it can scale up to meet the needs of large societies.  Sometimes it is difficult to know what the current state of a society is (which nodes are up, down, unhealthy, etc.)  This tool attempts to make understanding the current state of the society very easy by using visual cues to indicate the current health of every component.  CCM includes a GUI that features a tree and graphical representation of the society.  Users can interact with the society through this GUI.  CCM also includes a command infrastructure to allow any Cougaar component that to publish a simple object indicating what type of command (task) it can perform and then that capability is propagated up the configuration infrastructure so that users or other programs can determine what capabilities and agent has and execute those tasks.

CCM also provides a framework for sending any arbitrary object up through a chain of managers.  The component developer simply publishes an object to the blackboard that extends an interface provided by CCM.  CCM plugins will pick up that object and send it along with the rest of the configuration to their managers.  This framework could be used to send status information (such as CPU utilization, number of messages, etc). 

NOTE:  The current implementation of CCM uses a custom implemtion of the AgentContainmentService.  The changes should be available in a future release of Cougaar but until that time a modified core.jar file is necesary to use CCM.

CCM dynamically discovers and maintains the current configuration using two main plugins. 

AgentConfigurationPlugin

The AgentConfigurationPlugin should be present on every agent in the society (including each node agent).  This plugin periodically updates an internal representation of the components on that agent.  In addition to the configuration the plugin maintains a list of capablities that its child components are capable of performing.  The list of capabilities is included with the configuration information when it is sent to the configuration manager for that agent.  The plugin is provided the name of the community that its configuration manager is located in. The plugin uses directives to send the configuration and command information directly to the Configurtion manager.  This message serves as the heartbeat for the agent.

ConfigurationManagerPlugin
The ConfigurationManagerPlugin manages the configuration of all agents reporting to it and of all child configuration managers that report to it.  The plugin composes its view of the society based on the reporting components information.

Screenshots

Collapsed Two Node Society

This is the basic view for CCM.  The top pain contains a tree representation of the society and the bottom pane is a graphical representaion.  The panes are linked so if a user selects a component in the tree view, the graph is zoomed to that component.  Visualizing large graphs would be resouce intensive and would not be of much use to the user due to information overload.  The graph view is customizable to limit the scope of the society displayed so the user can concentrate on the portion of the society they are interested in.  The green dots next to the top level components indicate that those components and their children are healthy.

Expanded Two Node

This is view has one agent (SampleAgent3) expanded.  The user selects the agent in the tree view and graph is updated to expand that component to show components within a radius of 2 edges to the selected component. 

popup menu

Right-clicking on a component brings up a popup menu for interacting with that component.  Each component has some build in menu options for adding, removing, and moving the component to another location in the society.  In addition to
these built in options a submenu for each component on an agent listing the capabilities for that component is created.  In the image above the "TestPlugin" is the only component on the selected agent with a published capability.

dead agent
If an agent dies unexpectadly the agent is mareked with a red icon in the tree view and is removed from graph view.  Notice that the parent node of the agent is marked red and the society is marked red.  This way, even in collapsed view you can tell that some child component is dead.
red node
If an entire node stops communicating then the node and its child components turn yellow.  If the node does not restart communication within a certain period of time (user specified) the node turns red in the view.