---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.15.0
    operatorframework.io/installed-alongside-f9bfa2fbc1ae23c2: openshift-migration/mtc-operator.v1.8.10
  creationTimestamp: "2025-10-27T12:41:04Z"
  generation: 1
  labels:
    olm.managed: "true"
    operators.coreos.com/mtc-operator.openshift-migration: ""
  managedFields:
  - apiVersion: apiextensions.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:annotations:
          .: {}
          f:controller-gen.kubebuilder.io/version: {}
          f:operatorframework.io/installed-alongside-f9bfa2fbc1ae23c2: {}
        f:labels:
          .: {}
          f:olm.managed: {}
      f:spec:
        f:conversion:
          .: {}
          f:strategy: {}
        f:group: {}
        f:names:
          f:kind: {}
          f:listKind: {}
          f:plural: {}
          f:singular: {}
        f:scope: {}
        f:versions: {}
    manager: catalog
    operation: Update
    time: "2025-10-27T12:41:04Z"
  - apiVersion: apiextensions.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:status:
        f:acceptedNames:
          f:kind: {}
          f:listKind: {}
          f:plural: {}
          f:singular: {}
        f:conditions:
          k:{"type":"Established"}:
            .: {}
            f:lastTransitionTime: {}
            f:message: {}
            f:reason: {}
            f:status: {}
            f:type: {}
          k:{"type":"NamesAccepted"}:
            .: {}
            f:lastTransitionTime: {}
            f:message: {}
            f:reason: {}
            f:status: {}
            f:type: {}
    manager: kube-apiserver
    operation: Update
    subresource: status
    time: "2025-10-27T12:41:04Z"
  - apiVersion: apiextensions.k8s.io/v1
    fieldsType: FieldsV1
    fieldsV1:
      f:metadata:
        f:labels:
          f:operators.coreos.com/mtc-operator.openshift-migration: {}
    manager: olm
    operation: Update
    time: "2025-10-27T12:42:09Z"
  name: migstorages.migration.openshift.io
  resourceVersion: "54479"
  uid: 5a4535c8-e9bf-4383-b634-1343424c67f5
spec:
  conversion:
    strategy: None
  group: migration.openshift.io
  names:
    kind: MigStorage
    listKind: MigStorageList
    plural: migstorages
    singular: migstorage
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .status.conditions[?(@.type=='Ready')].status
      name: Ready
      type: string
    - jsonPath: .spec.backupStorageProvider
      name: BackupStorageProvider
      type: string
    - jsonPath: .spec.volumeSnapshotProvider
      name: VolumeSnapshotProvider
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: MigStorage is the Schema for the migstorages API
        properties:
          apiVersion:
            description: |-
              APIVersion defines the versioned schema of this representation of an object.
              Servers should convert recognized schemas to the latest internal value, and
              may reject unrecognized values.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
            type: string
          kind:
            description: |-
              Kind is a string value representing the REST resource this object represents.
              Servers may infer this from the endpoint the client submits requests to.
              Cannot be updated.
              In CamelCase.
              More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
            type: string
          metadata:
            type: object
          spec:
            description: MigStorageSpec defines the desired state of MigStorage
            properties:
              backupStorageConfig:
                description: Defines config for creating and storing Backups. This
                  is a required field.
                properties:
                  awsBucketName:
                    type: string
                  awsKmsKeyId:
                    type: string
                  awsPublicUrl:
                    type: string
                  awsRegion:
                    type: string
                  awsS3ForcePathStyle:
                    type: boolean
                  awsS3Url:
                    type: string
                  awsSignatureVersion:
                    type: string
                  azureResourceGroup:
                    type: string
                  azureStorageAccount:
                    type: string
                  azureStorageContainer:
                    type: string
                  credsSecretRef:
                    description: |-
                      ObjectReference contains enough information to let you inspect or modify the referred object.
                      ---
                      New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.
                       1. Ignored fields.  It includes many fields which are not generally honored.  For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage.
                       2. Invalid usage help.  It is impossible to add specific help for individual usage.  In most embedded usages, there are particular
                          restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted".
                          Those cannot be well described when embedded.
                       3. Inconsistent validation.  Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.
                       4. The fields are both imprecise and overly precise.  Kind is not a precise mapping to a URL. This can produce ambiguity
                          during interpretation and require a REST mapping.  In most cases, the dependency is on the group,resource tuple
                          and the version of the actual struct is irrelevant.
                       5. We cannot easily change it.  Because this type is embedded in many locations, updates to this type
                          will affect numerous schemas.  Don't make new APIs embed an underspecified API type they do not control.


                      Instead of using this type, create a locally provided and used type that is well-focused on your reference.
                      For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .
                    properties:
                      apiVersion:
                        description: API version of the referent.
                        type: string
                      fieldPath:
                        description: |-
                          If referring to a piece of an object instead of an entire object, this string
                          should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                          For example, if the object reference is to a container within a pod, this would take on a value like:
                          "spec.containers{name}" (where "name" refers to the name of the container that triggered
                          the event) or if no container name is specified "spec.containers[2]" (container with
                          index 2 in this pod). This syntax is chosen only to have some well-defined way of
                          referencing a part of an object.
                          TODO: this design is not final and this field is subject to change in the future.
                        type: string
                      kind:
                        description: |-
                          Kind of the referent.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                        type: string
                      name:
                        description: |-
                          Name of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        type: string
                      namespace:
                        description: |-
                          Namespace of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                        type: string
                      resourceVersion:
                        description: |-
                          Specific resourceVersion to which this reference is made, if any.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                        type: string
                      uid:
                        description: |-
                          UID of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  gcpBucket:
                    type: string
                  insecure:
                    type: boolean
                  s3CustomCABundle:
                    format: byte
                    type: string
                type: object
              backupStorageProvider:
                description: Holds the provider name whose object storage is used
                  for backup storage location. This is a required field.
                type: string
              refresh:
                description: Triggers a reconcile for the MigStorage CRD.
                type: boolean
              volumeSnapshotConfig:
                description: Defines config for taking Volume Snapshots.
                properties:
                  awsRegion:
                    type: string
                  azureApiTimeout:
                    type: string
                  azureResourceGroup:
                    type: string
                  credsSecretRef:
                    description: |-
                      ObjectReference contains enough information to let you inspect or modify the referred object.
                      ---
                      New uses of this type are discouraged because of difficulty describing its usage when embedded in APIs.
                       1. Ignored fields.  It includes many fields which are not generally honored.  For instance, ResourceVersion and FieldPath are both very rarely valid in actual usage.
                       2. Invalid usage help.  It is impossible to add specific help for individual usage.  In most embedded usages, there are particular
                          restrictions like, "must refer only to types A and B" or "UID not honored" or "name must be restricted".
                          Those cannot be well described when embedded.
                       3. Inconsistent validation.  Because the usages are different, the validation rules are different by usage, which makes it hard for users to predict what will happen.
                       4. The fields are both imprecise and overly precise.  Kind is not a precise mapping to a URL. This can produce ambiguity
                          during interpretation and require a REST mapping.  In most cases, the dependency is on the group,resource tuple
                          and the version of the actual struct is irrelevant.
                       5. We cannot easily change it.  Because this type is embedded in many locations, updates to this type
                          will affect numerous schemas.  Don't make new APIs embed an underspecified API type they do not control.


                      Instead of using this type, create a locally provided and used type that is well-focused on your reference.
                      For example, ServiceReferences for admission registration: https://github.com/kubernetes/api/blob/release-1.17/admissionregistration/v1/types.go#L533 .
                    properties:
                      apiVersion:
                        description: API version of the referent.
                        type: string
                      fieldPath:
                        description: |-
                          If referring to a piece of an object instead of an entire object, this string
                          should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                          For example, if the object reference is to a container within a pod, this would take on a value like:
                          "spec.containers{name}" (where "name" refers to the name of the container that triggered
                          the event) or if no container name is specified "spec.containers[2]" (container with
                          index 2 in this pod). This syntax is chosen only to have some well-defined way of
                          referencing a part of an object.
                          TODO: this design is not final and this field is subject to change in the future.
                        type: string
                      kind:
                        description: |-
                          Kind of the referent.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
                        type: string
                      name:
                        description: |-
                          Name of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
                        type: string
                      namespace:
                        description: |-
                          Namespace of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
                        type: string
                      resourceVersion:
                        description: |-
                          Specific resourceVersion to which this reference is made, if any.
                          More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
                        type: string
                      uid:
                        description: |-
                          UID of the referent.
                          More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids
                        type: string
                    type: object
                    x-kubernetes-map-type: atomic
                  snapshotCreationTimeout:
                    type: string
                type: object
              volumeSnapshotProvider:
                description: Holds the provider name whose object storage is used
                  for backup storage location.
                type: string
            required:
            - backupStorageConfig
            - backupStorageProvider
            type: object
          status:
            description: MigStorageStatus defines the observed state of MigStorage
            properties:
              conditions:
                items:
                  description: |-
                    Condition
                    Type - The condition type.
                    Status - The condition status.
                    Reason - The reason for the condition.
                    Message - The human readable description of the condition.
                    Durable - The condition is not un-staged.
                    Items - A list of `items` associated with the condition used to replace [] in `Message`.
                    staging - A condition has been explicitly set/updated.
                  properties:
                    category:
                      type: string
                    durable:
                      type: boolean
                    lastTransitionTime:
                      format: date-time
                      type: string
                    message:
                      type: string
                    reason:
                      type: string
                    status:
                      type: string
                    type:
                      type: string
                  required:
                  - category
                  - lastTransitionTime
                  - status
                  - type
                  type: object
                type: array
              observedDigest:
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources: {}
status:
  acceptedNames:
    kind: MigStorage
    listKind: MigStorageList
    plural: migstorages
    singular: migstorage
  conditions:
  - lastTransitionTime: "2025-10-27T12:41:04Z"
    message: no conflicts found
    reason: NoConflicts
    status: "True"
    type: NamesAccepted
  - lastTransitionTime: "2025-10-27T12:41:04Z"
    message: the initial names have been accepted
    reason: InitialNamesAccepted
    status: "True"
    type: Established
  storedVersions:
  - v1alpha1
