Table Of Contents

Previous topic

4.2. Interface

Next topic

4.4. Method Calls

This Page

4.3. Agent Interface Definition

An agent is free to accept any type of message that they want, be in prorietary or even encrypted. This is useful for sending data between agents on different nodes. For the interface presented to a GUI, it is recommened to follow the standard MAGI interface used by core agents. This makes automatic integration possible. If the interface of the agent doesn’t conform this the MAGI standard or requires a custom GUI to interact with, then don’t force it.

Each agent that wants to be integrated by the experiment GUIs must present their interface in a common fashion. This interface definition is a simple YAML file. It is also expected that the agent defines setConfiguration, either directly or via an inhereited class.

4.3.1. IDL format

key value
name the name of the agent
group the grouping of agents that this belongs with
display the agent name for display to a user
description a description of what the agent actually does
inherits the name of another IDL object that this object inherits values from
execute the style of execution for the agent (thread, pipe, socket)
mainfile the main file in the module tarfile to use for initial execution
. .
variables array of of definitions of variables that can be set with setConfiguration
variables:name the name of the variable
variables:help a help description of the variable and what it is used for
. .
methods array of definitions of the available method calls
methods:name the name of a method call
methods:help a help string to describe what the method does
methods:args array of the args to pass
methods:args:name the argument name
methods:args:type the argument data type (bool, str, int, float, binary, enum, strlist)
methods:args:allowed for ‘enum’, an array of strings that are allowed
methods:args:required true if the argument must be passed, false if not, defaults to true
methods:args:display a name to use for user display
methods:args:help a help string to describe what the argument is for
. .
datatype the definition of any non standard argument types
datatype:<name> the name of the new type
datatype:<name>:type one of dict, list, tuple, float, int, str, strlist
datatype:<name>:<def> def keys based on type, dict=(keytype, keydesc,value), list=(values), tuple=(values), default=(desc)
. .
software just a helpful indicator array of software that the agent may try to load

Definition of generic traffic client

Definition of http_wget that inherits from traffic client

Counters agent definition for example