cub invocation create
cub invocation create
Create a new invocation or bulk create invocations
Synopsis
Create a new invocation or bulk create multiple invocations by cloning existing ones.
SINGLE INVOCATION CREATION:
Create a new invocation to define a function invocation.
Toolchain Types:
- Kubernetes/YAML: For Kubernetes YAML configurations
- ConfigHub/YAML: For ConfigHub YAML configurations
- AppConfig/Properties: For application Java Properties configurations
- AppConfig/YAML: For application YAML configurations
- AppConfig/TOML: For application TOML configurations
- AppConfig/INI: For application INI configurations
- AppConfig/Env: For application Env configurations
- AppConfig/YAML: For application YAML configurations
- AppConfig/JSON: For application JSON configurations
Example Functions:
- vet-cel: Validate resources using CEL expressions
- vet-approvedby: Check if resource is approved
- vet-placeholders: Ensure no placeholders exist
- set-default-names: Set default names for resources
- set-annotation: Set annotations on resources
- ensure-context: Ensure context annotations are present
Function arguments can be provided as positional arguments or as named arguments using --argumentname=value syntax. Once a named argument is used, all subsequent arguments must be named. Use "--" to separate command flags from function arguments when using named function arguments.
An Invocation can call several functions, which are executed in the order they are listed. The positional form creates an Invocation that calls one function; to create one that calls several, supply the FunctionInvocations list with --from-stdin or --filename and omit the function positional arguments.
BULK INVOCATION CREATION:
When no positional arguments are provided, bulk create mode is activated. This mode clones existing invocations based on filters and creates multiple new invocations with optional modifications.
Single Invocation Examples:
# Create an invocation to validate replicas > 1 for Deployments
cub invocation create --space my-space -o json replicated Kubernetes/YAML vet-cel 'r.kind != "Deployment" || r.spec.replicas > 1'
# Create an invocation to enforce low resource usage (replicas < 10)
cub invocation create --space my-space -o json lowcost Kubernetes/YAML vet-cel 'r.kind != "Deployment" || r.spec.replicas < 10'
# Create an invocation to ensure no placeholders exist in resources
cub invocation create --space my-space -o json complete Kubernetes/YAML vet-placeholders
# Create an invocation requiring approval before applying changes
cub invocation create --space my-space -o json require-approval Kubernetes/YAML vet-approvedby 1
# Create an invocation to add a "cloned=true" annotation
cub invocation create --space my-space -o json stamp Kubernetes/YAML set-annotation cloned true
# Using named arguments for clarity (note the "--" separator)
cub invocation create --space my-space -o json stamp Kubernetes/YAML -- set-annotation --key=cloned --value=true
# Create an invocation that calls several functions in order
echo '{"FunctionInvocations": [
{"FunctionName": "set-default-names"},
{"FunctionName": "set-annotation", "Arguments": [{"Value": "cloned"}, {"Value": "true"}]}
]}' | cub invocation create --space my-space --from-stdin stamp-and-name Kubernetes/YAML
Bulk Create Examples:
# Clone all invocations matching a pattern with name prefixes
cub invocation create --where "FunctionInvocations.*.FunctionName = 'vet-cel'" --name-prefix dev-,staging- --dest-space dev-space
# Clone specific invocations to multiple spaces
cub invocation create --invocation my-invocation --dest-space dev-space,staging-space
# Clone invocations using a where expression for destination spaces
cub invocation create --where "ToolchainType = 'Kubernetes/YAML'" --where-space "Labels.Environment IN ('dev', 'staging')"
# Clone invocations with modifications via JSON patch
echo '{"FunctionInvocations": [{"FunctionName": "vet-placeholders"}]}' | cub invocation create --where "FunctionInvocations.*.FunctionName = 'vet-cel'" --name-prefix v2- --from-stdin
cub invocation create [<slug> <toolchain type> [<function> [<arg1> ...]]] [flags]
Options
--allow-exists Allow creation of resources that already exist
--annotation strings annotations in key=value format; can separate by commas and/or use multiple instances of the flag
--delete-gate strings delete gates in key[=true] format; can separate by commas and/or use multiple instances of the flag
--dest-space strings destination spaces for bulk create (can be repeated or comma-separated)
--filename string Read the ConfigHub entity JSON from file, URL (https://), or stdin (-); mutually exclusive with --from-stdin
--filter string Filter entity to apply to the list. Specify as 'space/filter' for cross-space filters or just 'filter' for current space. Supports both slugs and UUIDs. The filter will be combined with any --where clause using AND logic. Examples: "production-filters/security-check", "my-filter-uuid", "validation-rules"
--filter-space string filter entity containing WHERE expression to select destination spaces for bulk create (slug or UUID)
--from-stdin Read the ConfigHub entity JSON (e.g., retrieved with cub <entity> get --quiet --json) from stdin; merged with command arguments on create, and merged with command arguments and existing entity on update
-h, --help help for create
--invocation strings target specific invocations by slug or UUID for bulk create (can be repeated or comma-separated)
--label strings labels in key=value format; can separate by commas and/or use multiple instances of the flag
--name-pattern string a pattern string for name generation of clones, prefix 'template:' to use a Go template with .SourceEntity to access the original Invocation and .Labels to access variant labels, example: 'template:{{.SourceEntitySlug}}-{{.Labels.env}}'
--name-prefix strings name prefixes for bulk create (can be repeated or comma-separated)
-o, --output string Output format. One of: json, yaml, name, wide, mutations, jq=<expr>, yq=<expr>, custom-columns=<spec>
--parameter stringArray declare a parameter as name[:datatype[:required]] (datatype defaults to string, required defaults to true; can be repeated). Reference declared parameters from templated argument values via {{ .Params.<name> }}.
--quiet No default output.
--variant-labels strings labels for bulk create in the format of key1=value1|value2,key2=value1|value2|value3
--verbose Detailed output, additive with default output
--where string Filter expression using SQL-inspired syntax. Supports conjunctions with AND. String operators: =, !=, <, >, <=, >=, LIKE, NOT LIKE, ILIKE, ~~, !~~, ~, ~*, !~, !~*. Pattern matching with LIKE/ILIKE uses % and _ wildcards. Regex operators (~, ~*, !~, !~*) support POSIX regular expressions. A related entity is referenced by prefix, as in "UpstreamUnit.Slug = 'base'"; when the reference names a list, a * segment matches any element, as in "FromLink.*.Slug = 'upgrade-app'". Examples: "Slug LIKE 'app-%'", "DisplayName ILIKE '%backend%'", "Slug ~ '^[a-z]+-[0-9]+$'"
--where-space string where expression to select destination spaces for bulk create
--worker string worker to execute the invocation function
Options inherited from parent commands
--context string The context to use for this command
--debug Debug output
--space string space ID to perform command on
SEE ALSO
- cub invocation - Invocation commands