Skip to main content

Volume

A governed folder of files in the object store with an owner group and grants.

Spec​

FieldTypeRequiredDefaultDescriptionConstraints
spec.catalogstringYesThe catalog (Lakehouse) this volume belongs to; the owner group is inherited.min 1, max 40; pattern ^[a-z]([-a-z0-9]*[a-z0-9])?$
spec.grantsarray of objectNo[]max 20
spec.grants[].groupstringYesThe Keycloak group whose members hold these verbs.min 1, max 64; pattern ^[A-Za-z0-9][A-Za-z0-9._-]*$
spec.grants[].verbsarray of stringYesAt least one verb; each verb at most once.min 1, max 3
spec.purposestringNodataWhat a volume holds. A libraries volume is code that every reader executes, so it restricts write to groups that also manage it.data, libraries
spec.storageobjectYesWhere a volume's files live: exactly one of platform-managed storage or an external prefix. Files live in the volume bucket, never in the table bucket.
spec.storage.externalobject (nullable)NoA prefix in the customer's own bucket, reached through an s3 connection.
spec.storage.external.connectionstringYesName of the s3 connection that holds the endpoint, bucket and credentials.min 1, max 40; pattern ^[a-z]([-a-z0-9]*[a-z0-9])?$
spec.storage.external.prefixstring (nullable)NoKey prefix inside the bucket; absent means the prefix the connection already scopes.max 512; pattern ^[A-Za-z0-9][A-Za-z0-9_./-]*$
spec.storage.managedobject (nullable)NoStorage the platform owns: the volume gets volumes/<catalog>/<name>/ in the platform object store. managed: {} selects it.

Status​

FieldTypeRequiredDefaultDescriptionConstraints
status.conditionsarray of objectNo[]
status.conditions[].lastTransitionTimestring (nullable)No
status.conditions[].messagestring (nullable)No
status.conditions[].observedGenerationinteger (nullable)Noformat int64
status.conditions[].reasonstring (nullable)No
status.conditions[].statusstringYes
status.conditions[].typestringYes
status.objectsinteger (nullable)Noformat int64
status.observedGenerationinteger (nullable)Noformat int64
status.prefixstring (nullable)NoThe object-store prefix the volume maps to.
status.readybooleanNofalseTrue when the prefix exists and its grants apply; filled by a later controller.
status.sizeBytesinteger (nullable)Noformat int64

Validation rules​

  • storage must be either managed or external, not both and not neither
  • an external prefix must not contain .. or //
  • each group may appear once in grants
  • a verb may appear once per grant
  • on a libraries volume only a group that also manages it may write