# Functions

CleanAll deletes all files at specified paths (recursively).
CopyRange takes one data block, checks if it is a hole or filled with zeroes, and copies it to the sink.
CopyRegistryImage download image from registry with docker image API.
CopyRegistryImageAll download image from registry with docker image API.
CreateCertificateDir creates a common certificate dir.
FindVM takes the UUID of the VM to migrate and finds its MOref.
GetBlockStatus runs libnbd.BlockStatus on a given disk range.
GetImageDigest returns the digest of the container image at url.
GetTerminationChannel returns a channel that listens for SIGTERM.
NewAsyncUploadDataSource creates a new instance of an UploadDataSource.
NewDataProcessor create a new instance of a data processor using the passed in data provider.
NewFormatReaders creates a new instance of FormatReaders using the input stream and content type passed in.
NewGCSDataSource creates a new instance of the GCSDataSource.
NewHTTPDataSource creates a new instance of the http data provider.
NewImageioDataSource creates a new instance of the ovirt-imageio data provider.
NewImagePullFailedError creates new ImagePullFailedError error object, with embedded error.
NewRegistryDataSource creates a new instance of the Registry Data Source.
NewS3DataSource creates a new instance of the S3DataSource.
NewUploadDataSource creates a new instance of an UploadDataSource.
NewVDDKDataSource creates a new instance of the vddk data provider.
ParseEndpoint parses the required endpoint and return the url struct.
ResizeImage resizes the images to match the requested size.

# Constants

MaxBlockStatusLength limits the maximum block status request size to 2GB.
MaxPreadLengthESX limits individual VDDK data block transfers to 23MB.
MaxPreadLengthVC limits indidivual VDDK data block transfers to 2MB only when connecting to vCenter.
ProcessingPhaseComplete is the phase where the entire process completed successfully and we can exit gracefully.
ProcessingPhaseConvert is the phase in which the data is taken from the url provided by the source, and it is converted to the target RAW disk image format.
ProcessingPhaseError is the phase in which we encountered an error and need to exit ungracefully.
ProcessingPhaseInfo is the first phase, during this phase the source obtains information needed to determine which phase to go to next.
ProcessingPhaseMergeDelta is the phase in a multi-stage import where a delta image downloaded to scratch is applied to the base image.
ProcessingPhasePause is the phase where we pause processing and end the loop, and expect something to call the process loop again.
ProcessingPhaseResize the disk image, this is only needed when the target contains a file system (block device do not need a resize).
ProcessingPhaseTransferDataDir is the phase in which the data source writes data directly to the target path without conversion.
ProcessingPhaseTransferDataFile is the phase in which the data source writes data directly to the target file without conversion.
ProcessingPhaseTransferScratch is the phase in which the data source writes data to the scratch space.
ProcessingPhaseValidatePause is the phase in which the data processor should validate and then pause.

# Variables

ErrInvalidPath indicates that the path is invalid.
ErrRequiresScratchSpace indicates that we require scratch space.
MaxPreadLength is the maxmimum read size to request from VMware.
QueryChangedDiskAreas mocks the underlying QueryChangedDiskAreas for unit test, distinct from the one in VMwareVMOperations.

# Structs

AsyncUploadDataSource is an asynchronouse version of an upload data source, that returns finished phase instead of going to post upload processing phases.
BlockStatusData holds zero/hole status for one block of data.
ConnectionWrapper wraps ovirt connection.
DataProcessor holds the fields needed to process data from a data provider.
DiskService wraps ovirt disk service.
DiskServiceGet wraps ovirt disk get service.
DiskServiceResponse wraps ovirt response get service.
DiskSnapshotSlice wraps oVirt's DiskSnapshotSlice.
DiskSnapshotsService wraps oVirt's DiskSnapshotsService.
DiskSnapshotsServiceListRequest wraps oVirt's DiskSnapshotsServiceListRequest.
DiskSnapshotsServiceListResponse wraps oVirt's DiskSnapshotsServiceListResponse.
DisksService wraps ovirt disks service.
FormatReaders contains the stack of readers needed to get information from the input stream (io.ReadCloser).
GCSDataSource is the struct containing the information needed to import from a GCS data source.
HTTPDataSource is the data provider for http(s) endpoints.
ImageioDataSource is the data provider for ovirt-imageio.
ImageioImageOptions is the ImageIO API's response to an OPTIONS request.
ImagePullFailedError indicates that the importer failed to pull an image; This error type wraps the actual error.
ImageTransferService wraps ovirt transfer service.
ImageTransferServiceCancelRequest wraps cancel request.
ImageTransferServiceCancelResponse wraps cancel response.
ImageTransferServiceExtendRequest wraps cancel request.
ImageTransferServiceExtendResponse wraps cancel response.
ImageTransferServiceFinalizeRequest warps finalize request.
ImageTransferServiceFinalizeResponse warps finalize response.
ImageTransferServiceGetRequest wraps get request.
ImageTransferServiceGetResponse wraps get response.
ImageTransfersService wraps ovirt transfer service.
ImageTransfersServiceAdd wraps ovirt add transfer service.
ImageTransfersServiceAddResponse wraps ovirt add transfer service.
ImageTransfersServiceResponse wraps ovirt add transfer service.
NbdKitLogWatcherVddk implements VDDK-specific nbdkit log handling.
NbdKitWrapper keeps track of one nbdkit process.
RegistryDataSource is the struct containing the information needed to import from a registry data source.
S3DataSource is the struct containing the information needed to import from an S3 data source.
StorageDomainService wraps oVirt's storage domain service.
StorageDomainsService wraps oVirt's StorageDomainsService.
SystemService wraps ovirt system service.
UploadDataSource contains all the information need to upload data into a data volume.
ValidationSizeError is an error indication size validation failure.
VDDKDataSource is the data provider for vddk.
VDDKFileSink writes the source disk data to a local file.
VMwareClient holds a connection to the VMware API with pre-filled information about one VM.

# Interfaces

ConnectionInterface defines connection methods.
DataSourceInterface is the interface all data sources should implement.
DiskServiceGetInterface defines service methods.
DiskServiceGetResponseInterface defines service methods.
DiskServiceInterface defines service methods.
DiskServiceResponseInterface defines service methods.
DiskSnapshotSliceInterface defines disk snapshot slice methods.
DiskSnapshotsServiceInterface defines disk snapshot service methods.
DiskSnapshotsServiceListRequestInterface defines disk snapshot service list methods.
DiskSnapshotsServiceListResponseInterface defines disk snapshot service list response methods.
DisksServiceInterface defines service methods.
ImageTransferServiceAddInterface defines service methods.
ImageTransferServiceCancelRequestInterface defines service methods.
ImageTransferServiceCancelResponseInterface defines service methods.
ImageTransferServiceExtendRequestInterface defines service methods.
ImageTransferServiceExtendResponseInterface defines service methods.
ImageTransferServiceFinalizeRequestInterface defines service methods.
ImageTransferServiceFinalizeResponseInterface defines service methods.
ImageTransferServiceGetRequestInterface defines service methods.
ImageTransferServiceGetResponseInterface defines service methods.
ImageTransferServiceInterface defines service methods.
ImageTransfersServiceAddResponseInterface defines service methods.
ImageTransfersServiceInterface defines service methods.
NbdOperations provides a mockable interface for the things needed from libnbd.
ResumableDataSource is the interface all resumeable data sources should implement.
S3Client is the interface to the used S3 client.
StorageDomainServiceInterface defines storage domain service methods.
StorageDomainsServiceInterface defines storage domains service methods.
SystemServiceInteface defines service methods.
VDDKDataSink provides a mockable interface for saving data from the source.
VMwareConnectionOperations provides a mockable interface for the things needed from VMware client objects.
VMwareVMOperations provides a mockable interface for the things needed from VMware VM objects.

# Type aliases

ProcessingPhase is the current phase being processed.