ApplicationInvocationDescription
¶
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 Application
s 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 InvocationParameter
s can reference the input parameters
of the
Application
. In addition, you can set the environment
variables through the same mechanism.
All Application
s have an ApplicationType
associated with them. This type
determines how the
user interacts with your Application
. We support the following types:
BATCH
: A non-interactiveApplication
which runs without user inputVNC
: An interactiveApplication
exposing a remote desktop interfaceWEB
: An interactiveApplication
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
ToolReference
invocation
: List<InvocationParameter>
Instructions on how to build the command-line invocation
List<InvocationParameter>
parameters
: List<ApplicationParameter>
The input parameters used by this Application
List<ApplicationParameter>
applicationType
: ApplicationType?
The type of this Application, it determines how users will interact with the Application
ApplicationType?
vnc
: VncDescription?
Information about how to reach the VNC service
VncDescription?
web
: WebDescription?
Information about how to reach the web service
WebDescription?
ssh
: SshDescription?
Information about how the SSH capabilities of this application
SshDescription?
container
: ContainerDescription?
Hints to the container system about how the Application should be launched
ContainerDescription?
environment
: JsonObject?
Additional environment variables to be added in the environment
JsonObject?
allowAdditionalMounts
: Boolean?
Flag to enable/disable support for additional file mounts (default: true for interactive apps)
Boolean?
allowAdditionalPeers
: Boolean?
Flag to enable/disable support for connecting Jobs together (default: true)
Boolean?
allowMultiNode
: Boolean?
Flag to enable/disable multiple replicas of this Application (default: false)
Boolean?
allowPublicIp
: Boolean?
Flag to enable/disable support for public IP (default false)
Boolean?
allowPublicLink
: Boolean?
Flag to enable/disable support for public link (default: true for web apps)
Boolean?
fileExtensions
: List<String>?
The file extensions which this Application can handle
List<String>?
This list used as a suffix filter. As a result, this list should typically include the dot.
modules
: ModulesSection?
A section describing integration with a module system. Currently only valid for `CONTAINER` based applications.
ModulesSection?
shouldAllowAdditionalMounts
: Boolean
Boolean
shouldAllowAdditionalPeers
: Boolean
Boolean