Skip to content

cub view create

cub view create

Create a new view or bulk create views

Synopsis

Create a new view or bulk create multiple views by cloning existing ones.

SINGLE VIEW CREATION:

Create a new view to define an entity view specification.

Examples:

  # Create a view with a filter and specific columns
  cub view create --space my-space unit-view unit-filter --column Unit.Slug --column Unit.DisplayName --column Space.Slug

  # Create a view with grouping and ordering
  cub view create --space my-space summary-view deployment-filter --column Unit.Labels.Environment --column Unit.ValidationErrors --group-by Unit.Labels.Environment --order-by Unit.CreatedAt --order-by-direction DESC

  # Create a view with custom columns and sorting
  cub view create --space my-space detailed-view my-filter --column Unit.Slug --column Unit.HeadRevisionNum --column UpstreamUnit.HeadRevisionNum --order-by Unit.UpdatedAt

  # Create a view from JSON
  cub view create --space my-space -o json my-view --from-stdin < view.json

BULK VIEW CREATION:

When no positional arguments are provided, bulk create mode is activated. This mode clones existing views based on filters and creates multiple new views with optional modifications.

Bulk Create Examples:

  # Clone all views matching a pattern with name prefixes
  cub view create --where "FilterID IS NOT NULL" --name-prefix backup- --dest-space backup-space

  # Clone specific views to multiple spaces
  cub view create --view my-view --dest-space dev-space,staging-space

  # Clone views using a where expression for destination spaces
  cub view create --where "GroupBy IS NOT NULL" --where-space "Labels.Environment IN ('dev', 'staging')"

  # Clone views with modifications via JSON patch
  echo '{"OrderByDirection": "DESC"}' | cub view create --where "OrderBy IS NOT NULL" --name-prefix sorted- --from-stdin

Column Names:

Columns should be specified in the format used by list commands, such as:

  • Unit.Slug, Unit.DisplayName, Unit.LastReleasedRevisionNum
  • Space.Slug, Space.DisplayName
  • Labels.Environment, Labels.Version
  • UpstreamUnit.HeadRevisionNum, UpstreamUnit.Slug
  • Target.Slug, Target.DisplayName
cub view create [<slug> [<filter>] [--of <entity-type>] [--column <column>...] [--group-by <column>] [--order-by <column>] [--order-by-direction <ASC|DESC>]] [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
      --column strings                          column names to display in the view (can be repeated or comma-separated)
      --column-data-type stringArray            DataType of one column, as <name>=<value> (repeatable; <name>=- clears it). The expected data type of the column value: string, int, bool, uuid or time
      --column-group-by stringArray             GroupBy of one column, as <name>=true|false (repeatable; <name>=- clears it). Group by this column
      --column-order-by-direction stringArray   OrderByDirection of one column, as <name>=<value> (repeatable; <name>=- clears it). Sort by this column, ASC or DESC
      --column-type stringArray                 ColumnType of one column, as <name>=<value> (repeatable; <name>=- clears it). The kind of value: MetadataAttribute, MetadataExpression, DataPath or DataExpression
      --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)
      --display-name string                     friendly name for the entity, which need not be unique or URL-safe; an entity without one is shown by its slug
      --dry-run                                 report what the command would write, and write nothing
      --filename string                         Read the ConfigHub entity's fields, as YAML or JSON, from file, URL (https://), or stdin (-), as --from-stdin does; 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)
      --filter-unit string                      filter, by slug or UUID, over Units selecting those to create from, with --from-backing-units
      --from-backing-units                      create a View from each ConfigHub/YAML Unit --where-unit, --filter-unit and --space select that describes one, in the Unit's space, with the Unit as its backing Unit
      --from-stdin                              Read the ConfigHub entity's fields, as YAML or JSON, from stdin; merged with command arguments on create, and merged with command arguments and existing entity on update. A field the entity does not have, or one only the server sets, is refused; cub <entity> explain lists the fields
      --group-by string                         column name to group by
  -h, --help                                    help for create
      --hidden-reason string                    hide the entity, giving the reason as a name such as Archived: lists and bulk operations leave it out unless --include-hidden names the reason (use '-' to clear, which shows the entity again)
      --include-hidden string[="*"]             Also select hidden entities, to list or to act on: those hidden for the given HiddenReasons, comma-separated, as in --include-hidden=BackingUnit, or for any reason when given no value or "*". ConfigHub/YAML Units, which hold the configuration of other entities, are hidden with the reason BackingUnit. A --where naming entities by Slug or ID selects them whether hidden or not
      --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 .SourceEntitySlug to access the original View 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)
      --of string                               entity type to view (e.g., Unit, Space). At least one of <filter> arg or --of must be specified.
      --order-by string                         column name to sort by
      --order-by-direction string               sort direction (ASC or DESC, only valid with --order-by)
  -o, --output string                           Output format. One of: json, yaml, name, wide, mutations, jq=<expr>, yq=<expr>, custom-columns=<spec>
      --patch-existing                          with --from-backing-units, patch a View a selected Unit already backs with what the Unit holds that it has not taken yet, rather than report that the Unit backs it
      --permission strings                      permission in format Action:UserIDOrUsername, Action:group:GroupSlugOrID for a group you belong to, or Action:serviceaccount:ServiceAccountSlugOrID (e.g., Manage:user@example.com, View:group:platform, View:serviceaccount:deploy-bot, can be repeated)
      --quiet                                   No default output.
      --set stringArray                         set a field of the View by its path, as <path>=<value> (repeatable). A path is field names separated by dots; a list element is addressed as ?<key>=<value> or by position, as in Stages.?Name=prod.WhereSpace, and is added if it is not there. A list of plain values separates them with ';'; an object or a list of objects is given as YAML or JSON. A reference is given as it is elsewhere, by slug, <space>/<slug> or ID. With --patch, only a path with no list element in it
      --unset stringArray                       clear a field of the View by its path, or remove the list element the path ends at (repeatable)
      --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
      --view strings                            target specific views by slug or UUID for bulk create (can be repeated or comma-separated)
      --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
      --where-unit string                       where expression over Units selecting those to create from, with --from-backing-units
      --with-backing-units                      give each View the bulk operation writes a backing Unit if it has none: a ConfigHub/YAML Unit holding its configuration, kept in step with it

Options inherited from parent commands

      --component string   the Component of --variant, when that names the variant alone; --variant <component>/<variant> says the same in one flag
      --context string     The context to use for this command
      --debug              Debug output
      --space string       space to operate in, by slug or UUID. Omitted, a list or bulk operation spans the organization and a single entity is named as <space>/<slug>; "*" means the same as omitting it
      --variant string     variant to operate in, as <component>/<variant>, or as <variant> with --component: the space naming that Component whose Variant label is <variant>. The same scope as --space, named by what it is rather than by the space's slug; the two cannot be combined

SEE ALSO