ApplicationInvocationDescription

API: Internal/Beta

The specification for how to invoke an Application

data class ApplicationInvocationDescription(
    val tool: ToolReference,
    val invocation: List<InvocationParameter>,
    val parameters: List<ApplicationParameter>,
    val outputFileGlobs: List<String>,
    val applicationType: ApplicationType?,
    val vnc: VncDescription?,
    val web: WebDescription?,
    val ssh: SshDescription?,
    val container: ContainerDescription?,
    val environment: JsonObject?,
    val allowAdditionalMounts: Boolean?,
    val allowAdditionalPeers: Boolean?,
    val allowMultiNode: Boolean?,
    val allowPublicIp: Boolean?,
    val allowPublicLink: Boolean?,
    val fileExtensions: List<String>?,
    val licenseServers: List<String>?,
    val modules: ModulesSection?,
    val shouldAllowAdditionalMounts: Boolean,
    val shouldAllowAdditionalPeers: Boolean,
)

All Applications require a tool. The Tool specify the concrete computing environment. With the tool we get the required software packages and configuration.

In this environment, we must start some software. Any Job launched with this Application will only run for as long as the software runs. You can specify the command-line invocation through the invocation property. Each element in this list produce zero or more arguments for the actual invocation. These InvocationParameters can reference the input parameters of the Application. In addition, you can set the environment variables through the same mechanism.

All Applications have an ApplicationType associated with them. This type determines how the user interacts with your Application. We support the following types:

  • BATCH: A non-interactive Application which runs without user input

  • VNC: An interactive Application exposing a remote desktop interface

  • WEB: An interactive Application exposing a graphical web interface

The Application must expose information about how to access interactive services. It can do so by setting vnc and web. Providers must use this information when opening an interactive session.

Users can launch a Job with additional resources, such as IP addresses and files. The Application author specifies the supported resources through the allowXXX properties.

Properties
tool: ToolReference A reference to the Tool used by this Application
invocation: List<InvocationParameter> Instructions on how to build the command-line invocation
parameters: List<ApplicationParameter> The input parameters used by this Application
outputFileGlobs: List<String>

Deprecated: Yes

applicationType: ApplicationType? The type of this Application, it determines how users will interact with the Application
vnc: VncDescription? Information about how to reach the VNC service
web: WebDescription? Information about how to reach the web service
ssh: SshDescription? Information about how the SSH capabilities of this application
container: ContainerDescription? Hints to the container system about how the Application should be launched
environment: JsonObject? Additional environment variables to be added in the environment
allowAdditionalMounts: Boolean? Flag to enable/disable support for additional file mounts (default: true for interactive apps)
allowAdditionalPeers: Boolean? Flag to enable/disable support for connecting Jobs together (default: true)
allowMultiNode: Boolean? Flag to enable/disable multiple replicas of this Application (default: false)
allowPublicIp: Boolean? Flag to enable/disable support for public IP (default false)
allowPublicLink: Boolean? Flag to enable/disable support for public link (default: true for web apps)
fileExtensions: List<String>? The file extensions which this Application can handle

This list used as a suffix filter. As a result, this list should typically include the dot.

licenseServers: List<String>? Hint used by the frontend to find appropriate license servers
modules: ModulesSection? A section describing integration with a module system. Currently only valid for `CONTAINER` based applications.
shouldAllowAdditionalMounts: Boolean
shouldAllowAdditionalPeers: Boolean