AccessGrid.org

Services

Node services are simply wrappers around software that should be run when a VenueClient enters a Venue. Common node services include the AudioService and VideoService, which start the audio tool (RAT) and the video tool (vic) respectively. Services are distinct, pluggable components in the Access Grid model. Custom services can be written for any purpose, packaged, distributed, and loaded into the VenueClient to extend its functionality. Lastly, because communication with the services takes place over SOAP, the service itself can be written in any programming language.

More detail about node services and how they related to the overall Access Grid architecture are given below.

AG Architecture

A general overview of the architecture of the Access Grid is given in the figure below. The VenueServer hosts a number of Venues, in a manner analogous to a web server hosting web pages. The VenueClient is used to access Venue information. The VenueClient communicates with the Node to take the appropriate action; for example, starting the audio tool upon entering a Venue.

 

AG Architecture

Node Architecture

The Node refers to a collection of software components running at or near the VenueClient to control tools to send and receive audio and video, among other things. The VenueClient communicates changes in state to the NodeService. The NodeService aggregates ServiceManagers from local machines, and collects information about Services running on them so it can communicate directly with the Services as needed.

NodeService

  • Aggregates ServiceManagers from local machines
  • Stores configuration, including service manager descriptions, services, and service configuration
  • Callable via a SOAP interface

ServiceManager

  • Discovers machine resources available
  • Discovers services available
  • Manages services
  • Callable via a SOAP interface

Service (for example, AudioService, VideoService)

  • Read/write configuration (for example, video card input number and type)
  • Describe capabilities
  • Execute underlying software (for example, vic or RAT)
  • Callable via a SOAP interface

 

 

AG Node Architecture

Data Flow on entering a Venue

  • When the VenueClient enters a Venue, a number of actions are performed to establish media addresses:
  • Query the NodeService for the Capabilities of its Services
  • Pass these Capabilities to the Venue (NegotiateCapabilities)
  • The Venue (in Negotiate Capabilities) matches incoming Capabilities with the Capabilities of media addresses that have already been allocated; if there is no match, the Venue allocates a new media address. The resulting set of media addresses is returned to the VenueClient (as StreamDescriptions).
  • The VenueClient passes these StreamDescriptions to the NodeService, which pushes them to individual services based on like Capabilities. For example, the audio stream is passed to the AudioService, because it has a Capability of type 'audio'.

 

 


Data Types

Parameter
Describes configurable attributes of Services. Multiple different Parameter classes are defined based to describe different types of data. These are described in more detail below.

Capability
Describes a capability of a service. The key attributes of the Capability class are type (arbitrary value) and the role ('producer' or 'consumer'). The VideoConsumerService, for example, has type 'video' and role 'consumer'. The AudioService has multiple capabilities: one which has type 'audio' and role 'consumer', and one that has type 'audio' and role 'producer', since the AudioService performs both of these roles.

StreamDescription
Describes an address for streaming, either a multicast or unicast address.

Parameters and Configuration

The types of Parameters include the following:

ValueParameter
Describes an integer-valued parameter.

TextParameter
Describes a text-valued parameter.

RangeParameter
Describes a parameter with an integer value in a given (integer) range.

OptionSetParameter
Describes a parameter with a value in a given set of values.

The various Parameter types are displayed in the Service Configuration dialog in a manner appropriate for their modification. For example, a RangeParameter is presented with a slider and value.



Service Configuration Dialog


Node configuration

The Node configuration includes information about service managers, services loaded, and service configuration. Users can create multiple named configurations, which are stored locally in ConfigParser (.ini) formatted files. These files are stored in the AccessGrid3/Config/nodeConfig directory.

Developers typically needn't know the format of the configuration files, but a sample file is available for review.

Sample Node Configuration

Logging

Services automatically create a log file in AccessGrid3/Logs, named for the service name (e.g., MyService.log)

Packaging

The code for a Service is delivered in a service package, a zip file containing the code, dependent files, and the service description file. Service packages are unpacked into a temporary directory the first time they are loaded, and are subsequently run from this temporary directory. Service packages are versioned by the version attribute in the service description file; when a newer version of a package is available, it is unpacked and overwrites any existing service files (for the same service type).

An example service description file (from the AudioService) is given below.

[ServiceDescription]
executable = AudioService.py
name = AudioService
capabilities = Capability1 Capability2
platform = neutral
version = 4.1
description = Rat-based audio service
inlineClass = AudioService
[Capability2]
role = consumer
type = audio
[Capability1]
role = producer
type = audio

 

Installing a Service

Ensure that you have handled the Prerequisites for running AG commands on the command-line, and then execute the following to install service.

 

agpm3.py -z MyService.zip

Upon success, agpm will report that the service has been successfully installed.

 

Note: In some Linux distributions, this command is named simply agpm.

Service SOAP Interface

The core methods in the AGService SOAP interface are highlighted here. The full SOAP interface for AGServices is available in the API Reference.

Upon entry into a Venue, the following methods are called against AGServices:

GetCapabilities
Returns the list of Capabilities of the service

SetStream
Sets the StreamDescription to be used by the service. In the case of the core services, SetStream also starts the service if it is enabled.

Start
The Start method executes the underlying program with the related stream description information and settings from the service configuration (for example, the AudioService executes rat).

When leaving a venue, or shutting down, the following methods are called on AGServices:

Stop
Terminates the underlying program

 

Examples

login or register to post comments