Create a Plugin

Plugin Integration

Details steps for integrating a new application (plugin) into iLauncher

1. Plugin File

  • The main purpose of the plugin file is to tell iLauncher what remote command to execute (Launch Script) for each application defined in the plugin and to enumerate where iLauncher should look for the remote application’s web-service (unix-socket file or TCP port).
  • Plugins files for iLauncher are simple JSON files stored in ~/.iLauncher/plugins/channels/personal/.
  • Click for a Plugin Example.

2. Launch Script

  • A Launch Script is simply a shell script stored on the remote system (HPC) in a known location that can start your intereactive applicaiton securely (e.g. bind to localhost, etc.) Although, it is technically possible to define everything required to start a remote application through a single command-line definition in the plugin (“command”), it is often easier to simply use a shell script that loads appropriate modules and binds HPC specific locations accordingly into your running container.
  • When creating a shell script that can launch your containerized application, be sure to place it in an accessible location on the HPC or Analytics Gateway Cloud instance. (e.g., $HOME or $PROJECTS_HOME)
  • Don’t forget to chmod and chgrp accordingly

3. HPC Container / Software

  • Upload either the singularity container or related software to each HPC or Analytics Gateway Cloud instance in an accessible location (e.g., $HOME or $PROJECTS_HOME).
  • Don’t forget to chmod and chgrp the application or container

Plugin Example

{
“version”: “1.00”,
“maintainer”: “ilauncher.support@infinitetactics.com”,
“supported”: false,
“multiNode”: false,
“description”: [
“code-server is VS Code running on a remote server, accessible through the browser.”
],
“available-on”: [ “HPC-Group-x86” ],
“applications”: {
“CodeServer”: {
“command”: “\$PROJECTS_HOME/datools/utils/launch-code-server.sh {Code Directory}”,
“port”: 18080,
“params”: {
“Code Directory”: {
“type”: “string”,
“default”: “\$HOME”
}
},
“ssl”: false,
“path”: “/”
}
}
}