190 likes | 311 Views
Node Services Development. Thomas D. Uram turam@mcs.anl.gov Argonne National Laboratory. Access Grid Architecture. VenueServer. VenueServer Server component for Venues Venue Virtual representation of a meeting room VenueClient User software for entering a Venue Node
E N D
Node ServicesDevelopment Thomas D. Uram turam@mcs.anl.gov Argonne National Laboratory
Access Grid Architecture VenueServer • VenueServer • Server component for Venues • Venue • Virtual representation of a meeting room • VenueClient • User software for entering a Venue • Node • Aggregation of hardware and software for participating in a meeting Venue Venue Venue Venue Client Node
Node Architecture Node • NodeService • Aggregates ServiceManagers • Manages node configurations • ServiceManager • Exposes available machine resources • Manages AGServices • AGService • Interface for controlling access to machine resources • Exposes service configuration interface Node Service Service Manager AGService
Overview • Expose machine resources • Describe available resources (e.g. video card) • Provide configuration layer • Describe available configuration parameters (e.g. video quality level) • Accept configuration of those parameters • Provide service abstraction • Services are controlled over SOAP interface, so could be written in any language with an interoperable SOAP implementation
Operation • Resources • Resources represent something the machine can make available (e.g. video capture device) • Resources are currently defined with only type and role attributes (e.g. type==video, role==producer) • When a service is added, it may have a resource assigned to it
Operation Venue Client Profile (incl. Capabilities) • Service Capabilities • The capabilities of the node are collected and passed to the venue • Capabilities are currently defined with only type and role attributes (e.g. type==video, role==producer) Venue Client Capabilities (aggregated from services) Node
Operation Venue State (incl. StreamDescs) Venue Client Profile (incl. Capabilities) • Capabilities Negotiation • The capabilities of the node are collected and passed to the venue • The venue allocates a stream (multicast group) for each producer capability of a yet non-existent type • The venue returns a stream (multicast group) for each existing consumer capability type • The returned streams are passed down to the services Venue Client Capabilities (aggregated from services) Node
Operation Venue State (incl. StreamDescs) Venue Client Profile (incl. Capabilities) • Stream Descriptions • The venue returns a stream description (multicast group) for each existing consumer capability type • The returned stream descriptions are passed down to the services • Service configure for the given streams (typically passing the contained multicast groups to media tools) Venue Client StreamDescriptions Capabilities (aggregated from services) Node Update AGServices
Configuration • Services may have a set of configurable parameters that control their operation • For example: video quality level, audio input gain • Configuration parameters are defined in terms of types from AGParameter.py • ValueParameter • TextParameter • OptionSetParameter • RangeParameter • Basic handling of parameters is performed in AGService
Configuration • The Node Management user interface includes code to represent parameters for editing TextParameter } OptionSetParameter } RangeParameter
Configuration • Parameter values can be used when the service is started • Configuration data is persisted in saved node configuration files • ConfigParser format • Stored in AccessGrid/nodeConfig
Other • Logging • Services derived from AGService automatically create a logfile in AccessGrid/Logs, based on Service class name
Packaging • A service is delivered in a service package, a zip-file containing the Python implementation, a service description file, and any supporting implementation files • A service description file (.svc) contains information presented to the user before adding the service • Service packages are installed using agpm.py (similar to shared applications): • agpm.py -z ServicePackage.zip • Service packages are extracted to a temporary directory, subject to their version
Packaging • Sample service description file [ServiceDescription] name = DebugService description = Example Debug Service capabilities = Capability1 Capability2 Capability3 executable = DebugService.py platform = neutral version = 1.0 [Capability1] role = consumer type = audio [Capability2] role = consumer type = video [Capability3] role = producer type = debug
Calls from Toolkit • On Enter • GetCapabilities() • Called during aggregation of capabilities from AGServices • ConfigureStream(StreamDescription) • Called to set the stream the AGService should use • Ignores trivial stream changes • On Exit • Stop() • Called to stop the AGService • Other • Start() • Not called explicitly • Typically called from ConfigureStream
Example: DebugService • Basic service that • logs messages in response to various calls to it • defines debug parameter which can be set through configuration interface • Review log file (DebugService.log) for proper operation
Exercise: ClientAnnouncerService • Service to announce presence • Sends user’s name over a multicast group • Watch for your name to appear on the ClientViewer
Exercise: ClientAnnouncerService • Retrieve Venue URL from VenueClient • Send Venue URL with name • Use fixed multicast address, to share presence data across Venues