Skip to content

cub resource list

cub resource list

List resources

Synopsis

List the resources contained in your units' configuration data, in a space or across all spaces.

Resources can be filtered by their metadata (ResourceType, ResourceName, ToolchainType, UnitID, SpaceID, TargetID) and by their configuration data. Data paths use dot notation, and a literal dot within a key is escaped as ~1 (for example Data.metadata.labels.app~1kubernetes~1io/name).

TargetID mirrors the containing unit's, so it selects resources by where they will be applied. Resources of units with no target have no TargetID.

Attributes of the containing unit and space are addressed with a prefix -- Unit.Slug, Space.ComponentID, Space.Labels.Environment -- and can be combined with resource and data predicates. Only the fields a filter names are fetched for those entities, so filtering on the unit's slug does not drag the unit's configuration data along.

Data paths use the same syntax as --where-data on units, including array indexes (containers.0), wildcards (containers.*), associative matching (containers.?name=nginx), and split paths (.|). A path selecting several values matches when any of them satisfies the comparison. Embedded accessors (#accessor) and parameter bindings (@key:name) are the exceptions; use "cub unit list --where-data" for those.

Examples:

  # List all resources in a space
  cub resource list --space my-space

  # List every Deployment in the organization
  cub resource list --space "*" --where "ResourceType = 'apps/v1/Deployment'"

  # List everything headed for one target, across all spaces
  cub resource list --space "*" --where "TargetID = '<target-uuid>'"

  # Find resources that are not bound to any target yet
  cub resource list --space "*" --where "TargetID IS NULL"

  # Filter by the resource's own Kubernetes labels, or by its space's labels
  cub resource list --space "*" --where "Data.metadata.labels.app = 'checkout'"
  cub resource list --space "*" --where "Space.Labels.Environment = 'prod' AND ResourceType = 'v1/Service'"

  # Filter by its space's Component
  COMPONENT_ID=$(cub component get checkout -o jq=.Component.ComponentID)
  cub resource list --space "*" --where "Space.ComponentID = '$COMPONENT_ID'"

  # Find Deployments running more than one replica
  cub resource list --space "*" --where "ResourceType = 'apps/v1/Deployment' AND Data.spec.replicas > 1"

  # Find a named container's image, wherever it sits in the containers array
  cub resource list --space "*" --where "Data.spec.template.spec.containers.?name=nginx.image LIKE 'nginx:1.%'"

  # Any container running an image from a given registry
  cub resource list --space "*" --where "Data.spec.template.spec.containers.*.image LIKE 'ghcr.io/%'"

  # Find resources by name
  cub resource list --space "*" --where "ResourceName LIKE '%/checkout%'"

  # Find resources whose data has a top-level key
  cub resource list --space my-space --where "Data ? 'spec'"

  # List resources without headers for scripting
  cub resource list --space my-space --no-headers

  # Include the configuration data, which is omitted from the default output
  cub resource list --space my-space --select "ResourceType,ResourceName,Data" -o json
cub resource list [flags]

Options

      --columns strings               columns to display; can be repeated or comma-separated (e.g., Slug,Labels.Environment)
      --contains string               Free text search for entities containing the specified text. Searches across string fields (like Slug, DisplayName) and map fields (like Labels, Annotations). Case-insensitive matching. Can be combined with --where using AND logic. Example: "backend" to find entities with backend in any searchable field
      --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"
  -h, --help                          help for list
      --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
      --limit int                     Return at most this many entities; 0 returns all of them. They are read from the server in pages of at most 1000
      --no-headers                    Don't print headers for table output
      --order-by string               Order the entities by these fields, as comma-separated 'ASC:Field', 'DESC:Field' or 'Field' terms, such as "DESC:CreatedAt". Entities with equal values are ordered by ID. With --limit, this decides which entities are returned
  -o, --output string                 Output format. One of: json, yaml, name, wide, mutations, jq=<expr>, yq=<expr>, custom-columns=<spec>
      --quiet                         No default output.
      --raw-data                      include each resource's configuration in its original form (YAML for Kubernetes), as RawData in --json output
      --select string                 Comma-separated list of fields to retrieve and display. Entity IDs and Slug are always included. Example: "DisplayName,CreatedAt,Labels"
      --verbose                       Detailed output, additive with default output
      --view string                   view slug or UUID whose columns to display; DataPath columns are read from the stored configuration
      --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]+$'"

Options inherited from parent commands

      --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>

SEE ALSO