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

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.

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.