CreationData.java
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.
package com.azure.resourcemanager.compute.models;
import com.azure.core.annotation.Fluent;
import com.azure.core.util.logging.ClientLogger;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
/** Data used when creating a disk. */
@Fluent
public final class CreationData {
@JsonIgnore private final ClientLogger logger = new ClientLogger(CreationData.class);
/*
* This enumerates the possible sources of a disk's creation.
*/
@JsonProperty(value = "createOption", required = true)
private DiskCreateOption createOption;
/*
* Required if createOption is Import. The Azure Resource Manager
* identifier of the storage account containing the blob to import as a
* disk.
*/
@JsonProperty(value = "storageAccountId")
private String storageAccountId;
/*
* Disk source information.
*/
@JsonProperty(value = "imageReference")
private ImageDiskReference imageReference;
/*
* Required if creating from a Gallery Image. The id of the
* ImageDiskReference will be the ARM id of the shared galley image version
* from which to create a disk.
*/
@JsonProperty(value = "galleryImageReference")
private ImageDiskReference galleryImageReference;
/*
* If createOption is Import, this is the URI of a blob to be imported into
* a managed disk.
*/
@JsonProperty(value = "sourceUri")
private String sourceUri;
/*
* If createOption is Copy, this is the ARM id of the source snapshot or
* disk.
*/
@JsonProperty(value = "sourceResourceId")
private String sourceResourceId;
/*
* If this field is set, this is the unique id identifying the source of
* this resource.
*/
@JsonProperty(value = "sourceUniqueId", access = JsonProperty.Access.WRITE_ONLY)
private String sourceUniqueId;
/*
* If createOption is Upload, this is the size of the contents of the
* upload including the VHD footer. This value should be between 20972032
* (20 MiB + 512 bytes for the VHD footer) and 35183298347520 bytes (32 TiB
* + 512 bytes for the VHD footer).
*/
@JsonProperty(value = "uploadSizeBytes")
private Long uploadSizeBytes;
/**
* Get the createOption property: This enumerates the possible sources of a disk's creation.
*
* @return the createOption value.
*/
public DiskCreateOption createOption() {
return this.createOption;
}
/**
* Set the createOption property: This enumerates the possible sources of a disk's creation.
*
* @param createOption the createOption value to set.
* @return the CreationData object itself.
*/
public CreationData withCreateOption(DiskCreateOption createOption) {
this.createOption = createOption;
return this;
}
/**
* Get the storageAccountId property: Required if createOption is Import. The Azure Resource Manager identifier of
* the storage account containing the blob to import as a disk.
*
* @return the storageAccountId value.
*/
public String storageAccountId() {
return this.storageAccountId;
}
/**
* Set the storageAccountId property: Required if createOption is Import. The Azure Resource Manager identifier of
* the storage account containing the blob to import as a disk.
*
* @param storageAccountId the storageAccountId value to set.
* @return the CreationData object itself.
*/
public CreationData withStorageAccountId(String storageAccountId) {
this.storageAccountId = storageAccountId;
return this;
}
/**
* Get the imageReference property: Disk source information.
*
* @return the imageReference value.
*/
public ImageDiskReference imageReference() {
return this.imageReference;
}
/**
* Set the imageReference property: Disk source information.
*
* @param imageReference the imageReference value to set.
* @return the CreationData object itself.
*/
public CreationData withImageReference(ImageDiskReference imageReference) {
this.imageReference = imageReference;
return this;
}
/**
* Get the galleryImageReference property: Required if creating from a Gallery Image. The id of the
* ImageDiskReference will be the ARM id of the shared galley image version from which to create a disk.
*
* @return the galleryImageReference value.
*/
public ImageDiskReference galleryImageReference() {
return this.galleryImageReference;
}
/**
* Set the galleryImageReference property: Required if creating from a Gallery Image. The id of the
* ImageDiskReference will be the ARM id of the shared galley image version from which to create a disk.
*
* @param galleryImageReference the galleryImageReference value to set.
* @return the CreationData object itself.
*/
public CreationData withGalleryImageReference(ImageDiskReference galleryImageReference) {
this.galleryImageReference = galleryImageReference;
return this;
}
/**
* Get the sourceUri property: If createOption is Import, this is the URI of a blob to be imported into a managed
* disk.
*
* @return the sourceUri value.
*/
public String sourceUri() {
return this.sourceUri;
}
/**
* Set the sourceUri property: If createOption is Import, this is the URI of a blob to be imported into a managed
* disk.
*
* @param sourceUri the sourceUri value to set.
* @return the CreationData object itself.
*/
public CreationData withSourceUri(String sourceUri) {
this.sourceUri = sourceUri;
return this;
}
/**
* Get the sourceResourceId property: If createOption is Copy, this is the ARM id of the source snapshot or disk.
*
* @return the sourceResourceId value.
*/
public String sourceResourceId() {
return this.sourceResourceId;
}
/**
* Set the sourceResourceId property: If createOption is Copy, this is the ARM id of the source snapshot or disk.
*
* @param sourceResourceId the sourceResourceId value to set.
* @return the CreationData object itself.
*/
public CreationData withSourceResourceId(String sourceResourceId) {
this.sourceResourceId = sourceResourceId;
return this;
}
/**
* Get the sourceUniqueId property: If this field is set, this is the unique id identifying the source of this
* resource.
*
* @return the sourceUniqueId value.
*/
public String sourceUniqueId() {
return this.sourceUniqueId;
}
/**
* Get the uploadSizeBytes property: If createOption is Upload, this is the size of the contents of the upload
* including the VHD footer. This value should be between 20972032 (20 MiB + 512 bytes for the VHD footer) and
* 35183298347520 bytes (32 TiB + 512 bytes for the VHD footer).
*
* @return the uploadSizeBytes value.
*/
public Long uploadSizeBytes() {
return this.uploadSizeBytes;
}
/**
* Set the uploadSizeBytes property: If createOption is Upload, this is the size of the contents of the upload
* including the VHD footer. This value should be between 20972032 (20 MiB + 512 bytes for the VHD footer) and
* 35183298347520 bytes (32 TiB + 512 bytes for the VHD footer).
*
* @param uploadSizeBytes the uploadSizeBytes value to set.
* @return the CreationData object itself.
*/
public CreationData withUploadSizeBytes(Long uploadSizeBytes) {
this.uploadSizeBytes = uploadSizeBytes;
return this;
}
/**
* Validates the instance.
*
* @throws IllegalArgumentException thrown if the instance is not valid.
*/
public void validate() {
if (createOption() == null) {
throw logger
.logExceptionAsError(
new IllegalArgumentException("Missing required property createOption in model CreationData"));
}
if (imageReference() != null) {
imageReference().validate();
}
if (galleryImageReference() != null) {
galleryImageReference().validate();
}
}
}