{
  "description": "VolumeImportSource works as a specification to populate PersistentVolumeClaims with data\nimported from an HTTP/S3/Registry/Blank/ImageIO/VDDK source",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "VolumeImportSourceSpec defines the Spec field for VolumeImportSource",
      "properties": {
        "checkpoints": {
          "description": "Checkpoints is a list of DataVolumeCheckpoints, representing stages in a multistage import.",
          "items": {
            "description": "DataVolumeCheckpoint defines a stage in a warm migration.",
            "properties": {
              "current": {
                "description": "Current is the identifier of the snapshot created for this checkpoint.",
                "type": "string"
              },
              "previous": {
                "description": "Previous is the identifier of the snapshot from the previous checkpoint.",
                "type": "string"
              }
            },
            "required": [
              "current",
              "previous"
            ],
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "contentType": {
          "description": "ContentType represents the type of the imported data (Kubevirt or archive)",
          "type": "string"
        },
        "finalCheckpoint": {
          "description": "FinalCheckpoint indicates whether the current DataVolumeCheckpoint is the final checkpoint.",
          "type": "boolean"
        },
        "preallocation": {
          "description": "Preallocation controls whether storage for the target PVC should be allocated in advance.",
          "type": "boolean"
        },
        "source": {
          "description": "Source is the src of the data to be imported in the target PVC",
          "properties": {
            "blank": {
              "description": "DataVolumeBlankImage provides the parameters to create a new raw blank image for the PVC",
              "type": "object"
            },
            "gcs": {
              "description": "DataVolumeSourceGCS provides the parameters to create a Data Volume from an GCS source",
              "properties": {
                "secretRef": {
                  "description": "SecretRef provides the secret reference needed to access the GCS source",
                  "type": "string"
                },
                "url": {
                  "description": "URL is the url of the GCS source",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "http": {
              "description": "DataVolumeSourceHTTP can be either an http or https endpoint, with an optional basic auth user name and password, and an optional configmap containing additional CAs",
              "properties": {
                "certConfigMap": {
                  "description": "CertConfigMap is a configmap reference, containing a Certificate Authority(CA) public key, and a base64 encoded pem certificate",
                  "type": "string"
                },
                "extraHeaders": {
                  "description": "ExtraHeaders is a list of strings containing extra headers to include with HTTP transfer requests",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "secretExtraHeaders": {
                  "description": "SecretExtraHeaders is a list of Secret references, each containing an extra HTTP header that may include sensitive information",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "secretRef": {
                  "description": "SecretRef A Secret reference, the secret should contain accessKeyId (user name) base64 encoded, and secretKey (password) also base64 encoded",
                  "type": "string"
                },
                "url": {
                  "description": "URL is the URL of the http(s) endpoint",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "imageio": {
              "description": "DataVolumeSourceImageIO provides the parameters to create a Data Volume from an imageio source",
              "properties": {
                "certConfigMap": {
                  "description": "CertConfigMap provides a reference to the CA cert",
                  "type": "string"
                },
                "diskId": {
                  "description": "DiskID provides id of a disk to be imported",
                  "type": "string"
                },
                "secretRef": {
                  "description": "SecretRef provides the secret reference needed to access the ovirt-engine",
                  "type": "string"
                },
                "url": {
                  "description": "URL is the URL of the ovirt-engine",
                  "type": "string"
                }
              },
              "required": [
                "diskId",
                "url"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "registry": {
              "description": "DataVolumeSourceRegistry provides the parameters to create a Data Volume from an registry source",
              "properties": {
                "certConfigMap": {
                  "description": "CertConfigMap provides a reference to the Registry certs",
                  "type": "string"
                },
                "imageStream": {
                  "description": "ImageStream is the name of image stream for import",
                  "type": "string"
                },
                "platform": {
                  "description": "Platform describes the minimum runtime requirements of the image",
                  "properties": {
                    "architecture": {
                      "description": "Architecture specifies the image target CPU architecture",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "pullMethod": {
                  "description": "PullMethod can be either \"pod\" (default import), or \"node\" (node docker cache based import)",
                  "type": "string"
                },
                "secretRef": {
                  "description": "SecretRef provides the secret reference needed to access the Registry source",
                  "type": "string"
                },
                "url": {
                  "description": "URL is the url of the registry source (starting with the scheme: docker, oci-archive)",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            },
            "s3": {
              "description": "DataVolumeSourceS3 provides the parameters to create a Data Volume from an S3 source",
              "properties": {
                "certConfigMap": {
                  "description": "CertConfigMap is a configmap reference, containing a Certificate Authority(CA) public key, and a base64 encoded pem certificate",
                  "type": "string"
                },
                "secretRef": {
                  "description": "SecretRef provides the secret reference needed to access the S3 source",
                  "type": "string"
                },
                "url": {
                  "description": "URL is the url of the S3 source",
                  "type": "string"
                }
              },
              "required": [
                "url"
              ],
              "type": "object",
              "additionalProperties": false
            },
            "vddk": {
              "description": "DataVolumeSourceVDDK provides the parameters to create a Data Volume from a Vmware source",
              "properties": {
                "backingFile": {
                  "description": "BackingFile is the path to the virtual hard disk to migrate from vCenter/ESXi",
                  "type": "string"
                },
                "extraArgs": {
                  "description": "ExtraArgs is a reference to a ConfigMap containing extra arguments to pass directly to the VDDK library",
                  "type": "string"
                },
                "initImageURL": {
                  "description": "InitImageURL is an optional URL to an image containing an extracted VDDK library, overrides v2v-vmware config map",
                  "type": "string"
                },
                "secretRef": {
                  "description": "SecretRef provides a reference to a secret containing the username and password needed to access the vCenter or ESXi host",
                  "type": "string"
                },
                "thumbprint": {
                  "description": "Thumbprint is the certificate thumbprint of the vCenter or ESXi host",
                  "type": "string"
                },
                "url": {
                  "description": "URL is the URL of the vCenter or ESXi host with the VM to migrate",
                  "type": "string"
                },
                "uuid": {
                  "description": "UUID is the UUID of the virtual machine that the backing file is attached to in vCenter/ESXi",
                  "type": "string"
                }
              },
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "targetClaim": {
          "description": "TargetClaim the name of the specific claim to be populated with a multistage import.",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "VolumeImportSourceStatus provides the most recently observed status of the VolumeImportSource",
      "type": "object"
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}
