Package: pipeline2cube
AbstractA small utility application that can register a list of ChRIS pipeline
files and all dependent plugins to a CUBE instance.OverviewThis app is a straightforward CLI tool that can be used to register a
pipeline directly to a CUBE instance by using the thechrsandpipeline2cubeapps.A given pipeline (in a list) is passed tochrsto add to a CUBE. Any
plugins in the pipeline that are not currently registered to CUBE will
be returned as errors bychrs.Thepipeline2cubeapp will then simply parse that error information
and attempt to register the missing plugin, afterwhich it will
re-attempt thechrsoperation.In some ways, this app is akin to a Linux package installer that
installs a “meta” package (a pipeline) and fetches/installs all its
dependencies (plugins) if they don’t exist (are not yet registered to a
CUBE).DependenciesThe dependencies ofplugin2cubeare most pertinent, i.e.dockeron the host for complete plugin registration. For its partpipeline2cuberelies onchrsfor its internal heavy lifting.Arguments--pipelines<comma,list,of,pipelinefiles>A comma separated list of pipeline files to register. These are in either
JSON or YML format suitable for processing the ChRIS command line client
tool `chrs` (see https://crates.io/crates/chrs).

Each pipeline file in turn is dispatched to `chrs` for processing, and
any outputs from `chrs` are processed to either continue, register
missing plugins, or abort.

[--registry<defaultContainerRegistry>] ("fnndsc")
The default registry organization -- assumed to be valid for all
plugins in a given pipeline.

[--computenames<commalist,of,envs>] ("host")
A comma separted list of compute environments within a CUBE to which
the plugin can be registered.

[--CUBEurl<CUBEURL>] ("http://localhost:8000/api/v1/")
The URL of the CUBE to manage.

[--CUBEuser<user>] ("chris")
The name of the administration CUBE user.

[--CUBEpasswd<password>] ("chris1234")
The admin password.

[--inputdir<inputdir>]
An optional input directory specifier.

[--outputdir<outputdir>]
An optional output directory specifier. Some files are typically created
and executed from the<outputdir>.

[--man]
If specified, show this help page and quit.

[--verbosity<level>]
Set the verbosity level. The app is currently chatty at level 0 and level 1
provides even more information.

[--debug]
If specified, toggle internal debugging. This will break at any breakpoints
specified with 'Env.set_trace()'

[--debugTermsize<253,62>]
Debugging is via telnet session. This specifies the<cols>,<rows>size of
the terminal.

[--debugHost<0.0.0.0>]
Debugging is via telnet session. This specifies the host to which to connect.

[--debugPort<7900>]
Debugging is via telnet session. This specifies the port on which the telnet
session is listening.InstallationEasiest vector for installation ispipinstallpipeline2cubeExamplespipeline2cubeaccepts several CLI flags/arguments that together
specify the CUBE instance, pipelines to process, and several optional
parameters. For a full list of supported arguments, dopipeline2cube--manTo register a plugin, dopipeline2cube\--CUBEurlhttp:localhost:8000/api/v1/\--CUBEuserchrisadmin\--CUBEpasswdsomething1234\--computenameshost,galena\--registryfnndsc--pipelinepipeline1.yml,pipeline2.yml\--verbosity1DevelopmentInstructions for developers.To debug, the simplest mechanism is to trigger the internal remote
telnet session with the--debugCLI. Then, in the code, simply addEnv.set_trace()calls where appropriate. These can remain in the
codebase (i.e. you don’t need to delete/comment them out) since they are
onlylivewhen a--debugflag is passed.TestingRun unit tests usingpytest. Coming soon!-30-