Skip to content

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
  • OpenTofu/HCL: For OpenTofu HCL configurations

Example Functions:

  • vet-celexpr: 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.

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 --json replicated Kubernetes/YAML vet-celexpr 'r.kind != "Deployment" || r.spec.replicas > 1'

  # Create an invocation to enforce low resource usage (replicas < 10)
  cub invocation create --space my-space --json lowcost Kubernetes/YAML vet-celexpr 'r.kind != "Deployment" || r.spec.replicas < 10'

  # Create an invocation to ensure no placeholders exist in resources
  cub invocation create --space my-space --json complete Kubernetes/YAML vet-placeholders

  # Create an invocation requiring approval before applying changes
  cub invocation create --space my-space --json require-approval Kubernetes/YAML vet-approvedby 1

  # Create an invocation to add a "cloned=true" annotation
  cub invocation create --space my-space --json stamp Kubernetes/YAML set-annotation cloned true

  # Using named arguments for clarity (note the "--" separator)
  cub invocation create --space my-space --json stamp Kubernetes/YAML -- set-annotation --key=cloned --value=true

Bulk Create Examples:

  # Clone all invocations matching a pattern with name prefixes
  cub invocation create --where "FunctionName = 'vet-celexpr'" --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 '{"FunctionName": "vet-placeholders"}' | cub invocation create --where "FunctionName = 'vet-celexpr'" --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)
      --jq string                jq expression, suppressing default output
      --json                     JSON output, suppressing default output
      --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)
      --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, ILIKE, ~~, !~~, ~, ~*, !~, !~*. Pattern matching with LIKE/ILIKE uses % and _ wildcards. Regex operators (~, ~*, !~, !~*) support POSIX regular expressions. 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
      --yaml                     YAML output, suppressing default output
      --yq string                yq expression, suppressing default output

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