Application

wcbe_console is a command line application that can be used to control and monitor the WIDAR backend compute node application. The execution of this application is independent of the backend application itself; the command line application can create and destroy backend application instances, but it can also connect to a running backend application (input stage process).[11] Because the backend compute node application instances are named, it is possible to allow multiple instances of the application to run simultaneously.[12]

The wcbe_console application is a Python application that runs from the command line. The application opens an interactive console that can be used to control and monitor backend compute node application instances. The command synopsis to start the command line application follows.

wcbe_console [[[--name] | [-n]]NAME] [[[--sockdir] | [-s]]SOCKDIR]

name

The name of the backend compute node application instance to select initially. The instance name can be set interactively from this application's console, so the need for this option is minimal.

sockdir

The directory in which the compute node application instance directories exist. The default value of this option corresponds with the default value used by the wcbe application. Not used in most cases.

Once the application is started, the user is presented with a command line console. The console implements a command history saving mechanism, command editing and tab completion for commands. A help command has not been implemented, but is planned. The first thing a user ought to do is create and/or select a backend compute node application instance. When an application instance has not been selected, the prompt consists of a simple >; when an instance has been selected, the instance name serves as a prefix to the prompt, for example cbe0>. When the socket that would connect with the selected compute node application instance is not found, the command line application will spawn a new compute node application with the given name; this provides a simple way to start up the compute node application. To create and/or select a backend instance, the command is set name [name].

To destroy a compute node application instance from the command line application, the instance must first be selected. After the instance is selected (an action that could fail if the compute node application were not responding), the instance can be terminated with the kill command.

A brief description of other commands available from within the wcbe_console application follow. Further details concerning the effects of these commands may be gleaned by referring to the section called “Message types”.

quit

Quit the wcbe_console application. Note that this does not change the state or configuration of any compute node backend application instances.

get name

Get the name of the selected compute node backend application instance.

set name [NAME]

Select a compute node application instance by name. Creates a new instance if an instance with the supplied name cannot be found.

get src, set src [URI]

Get or set the lag frame source URI.

get flow, set flow [on|off]

Get or set the pipeline flow state.

get framedump, set framedump [ascii|binary|none]

Get or set the frame dump option.

get live_ts, set live_ts [true|false]

Get or set the “live timestamps” option (useful for file-based lag frame source only).

get rate, set rate [RATE]

Get or set the lag frame rate (useful for file-base lag frame source only).

get configs

Get the list of all existing configurations and pending configuration actions. The state of each existing configuration is indicated in the resulting output.

get config, set config [NAME]

Get or set the active configuration.

get all

Get all compute node application instance parameters.

create [NAME] [FILE]

Create a configuration named “NAME” using the XML backend configuration document in the file “FILE”.

destroy [NAME]

Destroy the named configuration. Note that the named configuration will not be immediately destroyed if it is the active configuration; however, it will be destroyed after another configuration is activated. You cannot undo a destroy operation, even when the destruction has been deferred because the configuration is active at the time the command is given.

kill

Terminate the currently selected backend compute node application instance.

get pipelines [config]

Get the list of pipelines in the configuration named config. Note that the input stage pipeline, INPUT_STAGE, only appears in the pipeline list for the active configuration.

get elements [pipeline]

Get the list of elements in the pipeline named pipeline. The format of the pipeline parameter is [config name]/[pipeline name].

get pads [element]

Get the list of pads for the element named element. The format of the elment parameter is [config name]/[pipeline name]/[element name].

get caps [pad]

Get the caps for the pad named pad. The format of the pad parameter is [config name]/[pipeline name]/[element name]/[pad name].

get peer [pad]

Get the peer of the pad named pad. The format of the pad parameter is [config name]/[pipeline name]/[element name]/[pad name]. The format of the returned string is [element name]/[pad name], where the returned element name refers to an element in the same pipeline as the pad named in the query.

get properties [element]

Get the list of properties of the element named element. The format of the element parameter is [config name]/[pipeline name]/[element name].

get property [property]

Get the value of the property named property. The format of the property parameter is [config name]/[pipeline name]/[element name]/[property name].

set property [property] [value]

Set the value of the property named property to value. The format of the property parameter is the same as described above for the get property command. The parameter value is a string that should be convertible to the proper type for the property.



[11] The command line application is, in essence, a front end to the backend compute node application. To limit overloading the terms front end and back end yet further, this document will refer to the front end application as the “command line application”, or something similar.

[12] It would be wise to use different lag frame sources for different backend application instances; since the lag frames arrive via UDP socket, there is no way to guarantee that a particular lag frame is pulled from the socket by a particular backend application instance. There is, however, no mechanism to prevent such (mis)configuration.