scramjetorg / transform-hub

Scramjet Transform Hub (STH) is a runtime supervisor that can run data processing programs called Sequences and manage local resources on any Linux server, Docker on small edge servers, and even large-scale Kubernetes clusters in the cloud or datacenters. It connects to Scramjet Spaces in Scramjet Cloud Platform.
GNU Affero General Public License v3.0
67 stars 8 forks source link

[CLI] Option for starting Sequence with a path to start-up JSON file #969

Open a-tylenda opened 1 year ago

a-tylenda commented 1 year ago

This is how options for starting Sequence look like:

Current profile: default
Usage: si sequence start [options] <id>

Start the Sequence with or without given arguments

Arguments:
  id                                 Sequence id to start or '-' for the last uploaded

Options:
  -f, --config-file <path-to-file>   Path to configuration file in JSON format to be passed to the Instance context
  -s, --config-string <json-string>  Configuration in JSON format to be passed to the Instance context
  --inst-id <string>                 Start Sequence with a custom Instance Id. Should consist of 36 characters
  --output-topic <string>            Topic to which the output stream should be routed
  --input-topic <string>             Topic to which the input stream should be routed
  --args <json-string>               Arguments to be passed to the first function in the Sequence
  --limits <json-string>             Instance limits
  -h, --help                         Display help for command

Global Options:
  -v, --version                      Display current SI version
  --config <profile-name>            Use configuration from profile
  --config-path <path>               Use configuration from file
  --progress                         Global flag, used to display progress (currently used only in 'si seq send/deploy' command

You can start a sequence with multiple options using flags like:

What is missing is a flag like --startup-config <path> that will include all the options in one JSON file, so that they can be passed to the Instance at once. Config would be based on type StartSequencePayload:

export type StartSequencePayload = {
    appConfig: AppConfig,
    args?: any[],
    outputTopic?: string,
    inputTopic?: string,
    limits?: InstanceLimits,
    instanceId?: string
}