apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    kubevirt.io/generation: "1"
    kubevirt.io/install-strategy-identifier: c51bc47ef3eccba54f764552d24801eb8388b36e
    kubevirt.io/install-strategy-registry: quay.io/kubevirt
    kubevirt.io/install-strategy-version: v1.0.1
  generation: 1
  labels:
    app.kubernetes.io/component: kubevirt
    app.kubernetes.io/managed-by: virt-operator
    kubevirt.io: ""
  name: virtualmachineexports.export.kubevirt.io
spec:
  conversion:
    strategy: None
  group: export.kubevirt.io
  names:
    categories:
      - all
    kind: VirtualMachineExport
    listKind: VirtualMachineExportList
    plural: virtualmachineexports
    shortNames:
      - vmexport
      - vmexports
    singular: virtualmachineexport
  scope: Namespaced
  versions:
    - additionalPrinterColumns:
        - jsonPath: .spec.source.kind
          name: SourceKind
          type: string
        - jsonPath: .spec.source.name
          name: SourceName
          type: string
        - jsonPath: .status.phase
          name: Phase
          type: string
      name: v1alpha1
      schema:
        openAPIV3Schema:
          description: VirtualMachineExport defines the operation of exporting a VM source
          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: VirtualMachineExportSpec is the spec for a VirtualMachineExport resource
              properties:
                source:
                  description: TypedLocalObjectReference contains enough information to let you locate the typed referenced object inside the same namespace.
                  properties:
                    apiGroup:
                      description: APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required.
                      type: string
                    kind:
                      description: Kind is the type of resource being referenced
                      type: string
                    name:
                      description: Name is the name of resource being referenced
                      type: string
                  required:
                    - kind
                    - name
                  type: object
                tokenSecretRef:
                  description: TokenSecretRef is the name of the custom-defined secret that contains the token used by the export server pod
                  type: string
                ttlDuration:
                  description: ttlDuration limits the lifetime of an export If this field is set, after this duration has passed from counting from CreationTimestamp, the export is eligible to be automatically deleted. If this field is omitted, a reasonable default is applied.
                  type: string
              required:
                - source
              type: object
            status:
              description: VirtualMachineExportStatus is the status for a VirtualMachineExport resource
              properties:
                conditions:
                  items:
                    description: Condition defines conditions
                    properties:
                      lastProbeTime:
                        format: date-time
                        nullable: true
                        type: string
                      lastTransitionTime:
                        format: date-time
                        nullable: true
                        type: string
                      message:
                        type: string
                      reason:
                        type: string
                      status:
                        type: string
                      type:
                        description: ConditionType is the const type for Conditions
                        type: string
                    required:
                      - status
                      - type
                    type: object
                  type: array
                  x-kubernetes-list-type: atomic
                links:
                  description: VirtualMachineExportLinks contains the links that point the exported VM resources
                  properties:
                    external:
                      description: VirtualMachineExportLink contains a list of volumes available for export, as well as the URLs to obtain these volumes
                      properties:
                        cert:
                          description: Cert is the public CA certificate base64 encoded
                          type: string
                        manifests:
                          description: Manifests is a list of available manifests for the export
                          items:
                            description: VirtualMachineExportManifest contains the type and URL of the exported manifest
                            properties:
                              type:
                                description: Type is the type of manifest returned
                                type: string
                              url:
                                description: Url is the url of the endpoint that returns the manifest
                                type: string
                            required:
                              - type
                              - url
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                            - type
                          x-kubernetes-list-type: map
                        volumes:
                          description: Volumes is a list of available volumes to export
                          items:
                            description: VirtualMachineExportVolume contains the name and available formats for the exported volume
                            properties:
                              formats:
                                items:
                                  description: VirtualMachineExportVolumeFormat contains the format type and URL to get the volume in that format
                                  properties:
                                    format:
                                      description: Format is the format of the image at the specified URL
                                      type: string
                                    url:
                                      description: Url is the url that contains the volume in the format specified
                                      type: string
                                  required:
                                    - format
                                    - url
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                  - format
                                x-kubernetes-list-type: map
                              name:
                                description: Name is the name of the exported volume
                                type: string
                            required:
                              - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                            - name
                          x-kubernetes-list-type: map
                      required:
                        - cert
                      type: object
                    internal:
                      description: VirtualMachineExportLink contains a list of volumes available for export, as well as the URLs to obtain these volumes
                      properties:
                        cert:
                          description: Cert is the public CA certificate base64 encoded
                          type: string
                        manifests:
                          description: Manifests is a list of available manifests for the export
                          items:
                            description: VirtualMachineExportManifest contains the type and URL of the exported manifest
                            properties:
                              type:
                                description: Type is the type of manifest returned
                                type: string
                              url:
                                description: Url is the url of the endpoint that returns the manifest
                                type: string
                            required:
                              - type
                              - url
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                            - type
                          x-kubernetes-list-type: map
                        volumes:
                          description: Volumes is a list of available volumes to export
                          items:
                            description: VirtualMachineExportVolume contains the name and available formats for the exported volume
                            properties:
                              formats:
                                items:
                                  description: VirtualMachineExportVolumeFormat contains the format type and URL to get the volume in that format
                                  properties:
                                    format:
                                      description: Format is the format of the image at the specified URL
                                      type: string
                                    url:
                                      description: Url is the url that contains the volume in the format specified
                                      type: string
                                  required:
                                    - format
                                    - url
                                  type: object
                                type: array
                                x-kubernetes-list-map-keys:
                                  - format
                                x-kubernetes-list-type: map
                              name:
                                description: Name is the name of the exported volume
                                type: string
                            required:
                              - name
                            type: object
                          type: array
                          x-kubernetes-list-map-keys:
                            - name
                          x-kubernetes-list-type: map
                      required:
                        - cert
                      type: object
                  type: object
                phase:
                  description: VirtualMachineExportPhase is the current phase of the VirtualMachineExport
                  type: string
                serviceName:
                  description: ServiceName is the name of the service created associated with the Virtual Machine export. It will be used to create the internal URLs for downloading the images
                  type: string
                tokenSecretRef:
                  description: TokenSecretRef is the name of the secret that contains the token used by the export server pod
                  type: string
                ttlExpirationTime:
                  description: The time at which the VM Export will be completely removed according to specified TTL Formula is CreationTimestamp + TTL
                  format: date-time
                  type: string
                virtualMachineName:
                  description: VirtualMachineName shows the name of the source virtual machine if the source is either a VirtualMachine or a VirtualMachineSnapshot. This is mainly to easily identify the source VirtualMachine in case of a VirtualMachineSnapshot
                  type: string
              type: object
          required:
            - spec
          type: object
      served: true
      storage: true