Welcome to the new DOCS.vastdata.com. We've added new menus and a version selector, plus new persona and resource pages to help customers get started. Looking for a previous article? Use the docs search.

Coming from the Web UI

Prev Next

Applies to VAST Cluster 5.5.

If your team started with VAST DataEngine in the VAST Web UI, with its forms and the Visual Builder, this page maps what you know to the code-first workflow. For every UI form it gives the vastde flag and the YAML key that set the same thing. It then covers the names that differ, how to move a pipeline you built in the UI into Git, and why one pipeline should have one place where it's edited.

The UI and the CLI write the same objects through the same API. Nothing you built in the UI has to be rebuilt; it has to be exported once and then edited only from its files.

Where the UI fits in a code-first workflow

Task Code-first Web UI
Create and change triggers, functions and pipelines YAML files in Git, applied with vastde Read-only for anything managed from Git
Deploy vastde pipelines deploy
Watch runs: dashboard, logs, traces, revisions vastde logs, vastde traces, vastde metrics Useful, especially the trace tree and span logs. See observability.
Registries, compute clusters, DataEngine setup Platform team. See setup prerequisites.

Triggers

Create Trigger form. Flags are for vastde triggers create element or triggers create schedule; keys are for the trigger file.

UI field CLI flag YAML key
Trigger Name --name name
Trigger Type: Element / Schedule the subcommand: create element / create schedule (the file's command)
Description --description description
Source Type: S3 / NFS --source-types S3 / NFS4 source_types: [S3] / [NFS4]
Source View --source-bucket (the view's bucket name) config.source_bucket_name
Event Type --event (repeatable) config.events
Target Event Broker View (element), Target Kafka View (schedule) --broker-name, with --broker-type Internal broker.name, broker.type: Internal
Topic --topic-name topic_name
Element Name Filters: prefix, suffix --name-prefix, --name-suffix config.name_filters.prefixes, .suffixes
(no UI field) --tag-prefix, --tag-suffix config.tag_filters.prefixes, .suffixes
Schedule: Simple / Advanced (Quartz) --cron-schedule config.cron_schedule (5-field cron or Quartz)
Custom Extensions --custom-extension key=value (repeatable) custom_extensions
Tags --tags tags

In 5.5, removing a tag in the UI's Update Trigger dialog doesn't take effect. Use vastde triggers update <name> --tags ….

Functions

Create Function and Edit Function forms. Flags are for vastde functions create and functions update; keys are for the function file.

UI field CLI flag YAML key
Function Name --name name
Description --description description
Revision Alias --revision-alias revision_alias
Revision No. (display only) (assigned by the server; functions get -r lists them)
Revision Description --revision-description revision_description
Container Registry --container-registry (name or VRN) container_registry_vrn
Artifact Source --artifact-source artifact_source
Image Tag --image-tag image_tag
Full image path (display only) (registry + artifact source + image tag)
Make local revision (Edit only) No equivalent confirmed. Probably the inverse of --publish. Probably is_published: false
(no UI field) --architecture, --publish, --default-revision-number architecture, is_published, default_revision_number

Saving the Edit Function form creates a new revision. So does functions update when the image, registry, architecture, publish state, tags or alias change. See revisions.

Pipelines

Create Pipeline form. Keys are for the pipeline file.

UI field CLI flag YAML key
Pipeline Name --name (create only) name. Can't be changed later.
Description --description (create only) description
Kubernetes Cluster (in the file) kubernetes_cluster_vrn: vast:dataengine:kubernetes-clusters:<name>. Can't be changed later.
Namespace (in the file) namespace: your tenant's DataEngine namespace on that cluster, dataengine-ns-<tenant GUID>. Can't be changed later.
Pipeline Secret Keys (create, or Import Yaml File) --secret-file creates the secret manifest.config.secrets lists it by name
Environment Variables (Add Variable, or Import ConfigMap) (in the file) manifest.config.environment_variables
(tags) --tags (create only) tags

The UI's import files are not the CLI's. The UI's secret import is a flat map of keys under one top-level key, and Import ConfigMap is a flat KEY: "value" map. The CLI's --secret-file holds name, kubernetes_cluster_vrn, namespace and entries: [{key, value}], and environment variables in the pipeline file are a list of {name, value}.

Visual Builder

UI action YAML
Drag a trigger into the builder An entry in manifest.triggers: a local name and the trigger's vrn
Drag a function into the builder An entry in manifest.function_deployments: a local name and the function's function_vrn
Connect two elements (a connection, or connector) An entry in manifest.links: source and destination
Event Trigger Label (Key, Value) on a function-to-function connector links[].conditional_trigger_labels: [{triggerLabelName, triggerLabelValue}]
Disconnect, or remove an element Delete the link or entry from the file, then update
Save Draft vastde pipelines create or pipelines update, without deploying
Deploy vastde pipelines deploy <name>, or pipelines create --deploy

Function deployments

The function deployment configuration panel in the Visual Builder. Keys are under the deployment's entry in manifest.function_deployments, except where noted.

UI field YAML key
Revision Number revision
Secret Keys config.secrets
Concurrency: min, max resources.min_concurrency, resources.max_concurrency
CPU: min, max resources.min_cpu, resources.max_cpu
Memory: min, max resources.min_memory, resources.max_memory
Autoscaling RPS factor resources.autoscaling_rps_factor, which the API marks deprecated and ignored. Use resources.autoscaling.
Disk (Ephemeral) resources.storage
Timeout resources.timeout (seconds)
Retries links[].config.retries, on the link, not the deployment
Log level config.log_level
Method of Delivery: ordered / unordered links[].config.events_order, on the link, not the deployment
Batch Size config.event_batching.batch_max_size (1–512)
Batch Timeout (seconds or milliseconds) config.event_batching.batch_timeout_ms, always in milliseconds
Environment Variables config.environment_variables
(no UI field) resources.num_workers, resources.max_concurrent_requests_limit, resources.autoscaling

Names that differ

In the UI In the CLI and YAML Notes
ElementCreated, ElementDeleted, ElementTagCreated, ElementTagDeleted ObjectCreated:*, ObjectRemoved:*, ObjectTagging:Put, ObjectTagging:Delete The same four events. The events a function receives use the UI's names: ObjectCreated:* delivers type vastdata.com:Element.ElementCreated, so event.subtype is ElementCreated. See events.
Source Type NFS NFS4
Connection, connector Link (manifest.links)
Retries and Method of Delivery, set per function deployment retries and events_order, set per link Set them on the link whose destination is the deployment.
Kubernetes Cluster (pipeline form), Compute Clusters (menu) kubernetes_cluster_vrn, vastde compute-clusters 5.5 renamed Kubernetes Clusters to Compute Clusters in the UI. The API and the VRN still say kubernetes-clusters.
Target Event Broker View, Target Kafka View broker: {type: Internal, name: <view bucket>}
Running (pipeline status) Ready The documented word and the API's value.
Tags as key-value pairs tags as plain strings Each tag may contain only lowercase letters, digits and hyphens.

Moving a UI-built pipeline into Git

Do this once per pipeline. <!-- TODO: verify on devvm: the UI Download and steps 2-3 haven't been exercised; step 4's get --manifest has -->

  1. Export the pipeline. In the Visual Builder's YAML view, click Download to save pipeline-manifest.yaml. That's a complete pipeline file. Or build the file from the CLI as described in exporting an existing pipeline.
  2. Write the trigger and function files. There's no export for these. Use vastde triggers get <name> -o yaml and vastde functions get <name> -r -o yaml to read the current values, and write trigger and function files from them. Don't copy read-only fields such as guid, vrn or status.
  3. Pin revisions. Set revision on every function deployment to the revision that's running now, so that the file means exactly what's deployed. vastde pipelines get <name> --manifest --deployed -o yaml shows the deployed manifest.
  4. Check it applies. Run vastde pipelines update <name> --config <file> and then vastde pipelines get <name> --manifest -o yaml, and compare it with your file's manifest section. Expect differences you didn't write: the cluster fills in a resources block (scaling, CPU and memory) for each function deployment, shows revision: null on unpinned ones, and leaves out an empty config. If the latest revision was deployed, the update creates a new revision; it doesn't change the running pipeline until you deploy.
  5. Commit the files. Leave secret files out of Git.
  6. Switch the team over. From now on, change the pipeline only by editing its files and running update and deploy, by hand or from CI. Use the UI to watch it.

One source of truth

The UI and the CLI save pipelines through the same API, and that API has no version check: no ETag, no "this pipeline changed since you loaded it". The last writer wins, section by section of the manifest.

  • If someone edits a pipeline in the Visual Builder and saves, and someone else then runs pipelines update with the file from Git, the file's sections replace the UI's edits without a warning.
  • The other way round, a UI save replaces what the file put there. The next update from Git puts it back.
  • A section the file leaves out is kept, so a stale or partial file can leave a mix of both.
  • Saving in the UI doesn't deploy, but it can create a new revision, and the next deploy, from either side, deploys the latest revision.

So pick one place to edit each pipeline. For pipelines you manage from Git, treat the UI as read-only: observe, inspect, read logs and traces, but don't save.

Registries and compute clusters

These forms are usually the platform team's work, not yours: linking a container registry, linking a Kubernetes cluster, creating a VAST compute cluster. If you need one, see setup prerequisites for what to ask for. The CLI equivalents are listed here so that you can read a setup script. In 5.5 these commands take flags only, not a file.

Container registry

Link a container registry form, vastde container-registries link:

UI field CLI flag
Primary kubernetes cluster --primary-cluster (name or VRN), --primary-namespace
Additional kubernetes clusters --additional-clusters, --additional-namespaces
Name --name
Base URL --url
Description --description
Authentication Method: User credentials --auth-type password, --username, --password (and optional --email)
Authentication Method: Kubernetes secret --auth-type secret, --secret
Authentication Method: None --auth-type none (the default)
Tags --tags

A pipeline can deploy a function only if the function's registry is linked to the pipeline's compute cluster and namespace. See what a deploy requires.

External Kubernetes cluster

Link Kubernetes Cluster form, vastde compute-clusters link:

UI field CLI flag
Name --name
API Server URL --kube-api-url
Description --description
Certificates: CA certificate, client certificate, private key --ca-path, --client-cert-path, --client-key-path (PEM files), or --mtls-credentials-guid for credentials that already exist; --interactive prompts for them
Tags --tags
Select Namespaces --namespaces

The cluster's VRN, which pipeline files use, is vast:dataengine:kubernetes-clusters:<name>.

VAST compute cluster

Creating a VAST compute cluster (Kubernetes on the cluster's own CNodes) is a cluster-admin task in the VAST Web UI or VAST CLI, with no vastde equivalent. When the platform team attaches your tenant to it, the cluster is linked to your tenant and gets your tenant's DataEngine namespace; you don't run vastde compute-clusters link for it. vastde compute-clusters list shows it. See Managing VAST Compute Clusters on the KB.

See also