Quality Objects (QuO)

Overview

Cougaar QuO module adds runtime support for Quality Objects (QuO).  QuO is used to add Quality of Service (QoS) adaption to object oriented software, such as Cougaars internal infrastructure.

This module adds support for the QuO kernel, which is a factory for QuO SystemConds and Contracts. The Metrics Service also uses QuO Resource Status Service (RSS) to implement the Metrics Service engine.  This module implements helper functions which allow easy interfacing between the Cougaar Metrics service and the QuO Kernel.  Specifically it adds:

  • Metrics SysConds get their values from the Metrics Service
  • A Syscond factory for creating Metrics Sysconds for different types of metrics and for reusing metrics.

QuO has been used with Cougaar to make QoS adaptive MTS Aspects for dynamically enabling compression and SSL. These MTS Aspects enable or disable compression and SSL based on the network conditions. The Ultralog society is the largest example of an application enhanced with QuO. The 2004 assessment had two types of QuO Qoskets, with 1000′s of Contracts and Syscond instances running on around 100 hosts.

Configuration

The SyscondFactory is the only component supplied by this module. It needs to be loaded with the AgentHostUpdaterComponent. These modules are loaded as part of the basic Metric Service rules and will be part of the “Standard” node.xsl template.

The Acme rule is:

agentHostUpdaterComponent = "org.cougaar.core.qos.rss.AgentHostUpdaterComponent" syscondFactory = "org.cougaar.lib.mquo.SyscondFactory" metrics_service_components_to_add = [agentHostUpdaterComponent, syscondFactory] society.each_node_agent() do |node_agent| metrics_service_components_to_add.each { |comp| node_agent.add_component do |c| c.classname = comp c.insertionpoint = "Node.AgentManager.Agent.MetricsServices.Component" end } end 

Operation

The QuO GUI can be enabled to view of status of QuO Sysconds, Contracts, and Metrics. The QuO gui is a swing window so the $DISPLAY enviroment variable must be set. The gui is enabled by loading the org.cougaar.lib.mquo.QuoGuiComponent into the NodeAgent.

Note: A QuO contract viewer servlet is available from Ultralog Robustness UC3. This allows viewing of QuO Contracts using the Cougaar Servlet interface.