apiVersion: apiextensions.crossplane.io/v1alpha1
kind: InfrastructureDefinition
metadata:
  name: buckets.tidbcloud.com
spec:
  crdSpecTemplate:
    group: tidbcloud.com
    version: v1alpha1
    names:
      kind: Bucket
      listKind: BucketList
      plural: buckets
      singular: bucket
    validation:
      openAPIV3Schema:
        type: object
        properties:
          spec:
            type: object
            properties:
              parameters:
                type: object
                properties:
                  region:
                    description: Region of the bucket.
                    type: string
                required:
                - region
            required:
            - parameters
---
apiVersion: apiextensions.crossplane.io/v1alpha1
kind: Composition
metadata:
  name: buckets.gcp.storage.com
  labels:
    provider: gcp
spec:
  writeConnectionSecretsToNamespace: crossplane-system
  reclaimPolicy: Delete
  from:
    apiVersion: tidbcloud.com/v1alpha1
    kind: Bucket
  to:
  - base:
      apiVersion: storage.gcp.crossplane.io/v1alpha3
      kind: Bucket
      spec:
        localPermission: ReadWrite
        cannedACL: private
        providerRef:
          name: gcp-provider
        reclaimPolicy: Delete
    patches:
    - fromFieldPath: "metadata.labels"
      toFieldPath: "metadata.labels"
    - fromFieldPath: "metadata.annotations"
      toFieldPath: "metadata.annotations"
    - fromFieldPath: "spec.parameters.region"
      toFieldPath: "spec.region"
---
apiVersion: apiextensions.crossplane.io/v1alpha1
kind: InfrastructurePublication
metadata:
  name: buckets.tidbcloud.com
spec:
  infrastructureDefinitionRef:
    name: buckets.tidbcloud.com
