All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.azure.resourcemanager.compute.models.VirtualMachineScaleSetOSDisk Maven / Gradle / Ivy

Go to download

This package contains Microsoft Azure Compute Management SDK. For documentation on how to use this package, please see https://aka.ms/azsdk/java/mgmt

There is a newer version: 2.44.0
Show newest version
// 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.azure.json.JsonReader;
import com.azure.json.JsonSerializable;
import com.azure.json.JsonToken;
import com.azure.json.JsonWriter;
import java.io.IOException;
import java.util.List;

/**
 * Describes a virtual machine scale set operating system disk.
 */
@Fluent
public final class VirtualMachineScaleSetOSDisk implements JsonSerializable {
    /*
     * The disk name.
     */
    private String name;

    /*
     * Specifies the caching requirements. Possible values are: **None,** **ReadOnly,** **ReadWrite.** The default
     * values are: **None for Standard storage. ReadOnly for Premium storage.**
     */
    private CachingTypes caching;

    /*
     * Specifies whether writeAccelerator should be enabled or disabled on the disk.
     */
    private Boolean writeAcceleratorEnabled;

    /*
     * Specifies how the virtual machines in the scale set should be created. The only allowed value is: **FromImage.**
     * This value is used when you are using an image to create the virtual machine. If you are using a platform image,
     * you also use the imageReference element described above. If you are using a marketplace image, you also use the
     * plan element previously described.
     */
    private DiskCreateOptionTypes createOption;

    /*
     * Specifies the ephemeral disk Settings for the operating system disk used by the virtual machine scale set.
     */
    private DiffDiskSettings diffDiskSettings;

    /*
     * Specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the size of the disk
     * in a virtual machine image. The property 'diskSizeGB' is the number of bytes x 1024^3 for the disk and the value
     * cannot be larger than 1023.
     */
    private Integer diskSizeGB;

    /*
     * This property allows you to specify the type of the OS that is included in the disk if creating a VM from
     * user-image or a specialized VHD. Possible values are: **Windows,** **Linux.**
     */
    private OperatingSystemTypes osType;

    /*
     * Specifies information about the unmanaged user image to base the scale set on.
     */
    private VirtualHardDisk image;

    /*
     * Specifies the container urls that are used to store operating system disks for the scale set.
     */
    private List vhdContainers;

    /*
     * The managed disk parameters.
     */
    private VirtualMachineScaleSetManagedDiskParameters managedDisk;

    /*
     * Specifies whether OS Disk should be deleted or detached upon VMSS Flex deletion (This feature is available for
     * VMSS with Flexible OrchestrationMode only). 

Possible values:

**Delete** If this value is used, * the OS disk is deleted when VMSS Flex VM is deleted.

**Detach** If this value is used, the OS disk is * retained after VMSS Flex VM is deleted.

The default value is set to **Delete**. For an Ephemeral OS * Disk, the default value is set to **Delete**. User cannot change the delete option for Ephemeral OS Disk. */ private DiskDeleteOptionTypes deleteOption; /** * Creates an instance of VirtualMachineScaleSetOSDisk class. */ public VirtualMachineScaleSetOSDisk() { } /** * Get the name property: The disk name. * * @return the name value. */ public String name() { return this.name; } /** * Set the name property: The disk name. * * @param name the name value to set. * @return the VirtualMachineScaleSetOSDisk object itself. */ public VirtualMachineScaleSetOSDisk withName(String name) { this.name = name; return this; } /** * Get the caching property: Specifies the caching requirements. Possible values are: **None,** **ReadOnly,** * **ReadWrite.** The default values are: **None for Standard storage. ReadOnly for Premium storage.**. * * @return the caching value. */ public CachingTypes caching() { return this.caching; } /** * Set the caching property: Specifies the caching requirements. Possible values are: **None,** **ReadOnly,** * **ReadWrite.** The default values are: **None for Standard storage. ReadOnly for Premium storage.**. * * @param caching the caching value to set. * @return the VirtualMachineScaleSetOSDisk object itself. */ public VirtualMachineScaleSetOSDisk withCaching(CachingTypes caching) { this.caching = caching; return this; } /** * Get the writeAcceleratorEnabled property: Specifies whether writeAccelerator should be enabled or disabled on the * disk. * * @return the writeAcceleratorEnabled value. */ public Boolean writeAcceleratorEnabled() { return this.writeAcceleratorEnabled; } /** * Set the writeAcceleratorEnabled property: Specifies whether writeAccelerator should be enabled or disabled on the * disk. * * @param writeAcceleratorEnabled the writeAcceleratorEnabled value to set. * @return the VirtualMachineScaleSetOSDisk object itself. */ public VirtualMachineScaleSetOSDisk withWriteAcceleratorEnabled(Boolean writeAcceleratorEnabled) { this.writeAcceleratorEnabled = writeAcceleratorEnabled; return this; } /** * Get the createOption property: Specifies how the virtual machines in the scale set should be created. The only * allowed value is: **FromImage.** This value is used when you are using an image to create the virtual machine. If * you are using a platform image, you also use the imageReference element described above. If you are using a * marketplace image, you also use the plan element previously described. * * @return the createOption value. */ public DiskCreateOptionTypes createOption() { return this.createOption; } /** * Set the createOption property: Specifies how the virtual machines in the scale set should be created. The only * allowed value is: **FromImage.** This value is used when you are using an image to create the virtual machine. If * you are using a platform image, you also use the imageReference element described above. If you are using a * marketplace image, you also use the plan element previously described. * * @param createOption the createOption value to set. * @return the VirtualMachineScaleSetOSDisk object itself. */ public VirtualMachineScaleSetOSDisk withCreateOption(DiskCreateOptionTypes createOption) { this.createOption = createOption; return this; } /** * Get the diffDiskSettings property: Specifies the ephemeral disk Settings for the operating system disk used by * the virtual machine scale set. * * @return the diffDiskSettings value. */ public DiffDiskSettings diffDiskSettings() { return this.diffDiskSettings; } /** * Set the diffDiskSettings property: Specifies the ephemeral disk Settings for the operating system disk used by * the virtual machine scale set. * * @param diffDiskSettings the diffDiskSettings value to set. * @return the VirtualMachineScaleSetOSDisk object itself. */ public VirtualMachineScaleSetOSDisk withDiffDiskSettings(DiffDiskSettings diffDiskSettings) { this.diffDiskSettings = diffDiskSettings; return this; } /** * Get the diskSizeGB property: Specifies the size of an empty data disk in gigabytes. This element can be used to * overwrite the size of the disk in a virtual machine image. The property 'diskSizeGB' is the number of bytes x * 1024^3 for the disk and the value cannot be larger than 1023. * * @return the diskSizeGB value. */ public Integer diskSizeGB() { return this.diskSizeGB; } /** * Set the diskSizeGB property: Specifies the size of an empty data disk in gigabytes. This element can be used to * overwrite the size of the disk in a virtual machine image. The property 'diskSizeGB' is the number of bytes x * 1024^3 for the disk and the value cannot be larger than 1023. * * @param diskSizeGB the diskSizeGB value to set. * @return the VirtualMachineScaleSetOSDisk object itself. */ public VirtualMachineScaleSetOSDisk withDiskSizeGB(Integer diskSizeGB) { this.diskSizeGB = diskSizeGB; return this; } /** * Get the osType property: This property allows you to specify the type of the OS that is included in the disk if * creating a VM from user-image or a specialized VHD. Possible values are: **Windows,** **Linux.**. * * @return the osType value. */ public OperatingSystemTypes osType() { return this.osType; } /** * Set the osType property: This property allows you to specify the type of the OS that is included in the disk if * creating a VM from user-image or a specialized VHD. Possible values are: **Windows,** **Linux.**. * * @param osType the osType value to set. * @return the VirtualMachineScaleSetOSDisk object itself. */ public VirtualMachineScaleSetOSDisk withOsType(OperatingSystemTypes osType) { this.osType = osType; return this; } /** * Get the image property: Specifies information about the unmanaged user image to base the scale set on. * * @return the image value. */ public VirtualHardDisk image() { return this.image; } /** * Set the image property: Specifies information about the unmanaged user image to base the scale set on. * * @param image the image value to set. * @return the VirtualMachineScaleSetOSDisk object itself. */ public VirtualMachineScaleSetOSDisk withImage(VirtualHardDisk image) { this.image = image; return this; } /** * Get the vhdContainers property: Specifies the container urls that are used to store operating system disks for * the scale set. * * @return the vhdContainers value. */ public List vhdContainers() { return this.vhdContainers; } /** * Set the vhdContainers property: Specifies the container urls that are used to store operating system disks for * the scale set. * * @param vhdContainers the vhdContainers value to set. * @return the VirtualMachineScaleSetOSDisk object itself. */ public VirtualMachineScaleSetOSDisk withVhdContainers(List vhdContainers) { this.vhdContainers = vhdContainers; return this; } /** * Get the managedDisk property: The managed disk parameters. * * @return the managedDisk value. */ public VirtualMachineScaleSetManagedDiskParameters managedDisk() { return this.managedDisk; } /** * Set the managedDisk property: The managed disk parameters. * * @param managedDisk the managedDisk value to set. * @return the VirtualMachineScaleSetOSDisk object itself. */ public VirtualMachineScaleSetOSDisk withManagedDisk(VirtualMachineScaleSetManagedDiskParameters managedDisk) { this.managedDisk = managedDisk; return this; } /** * Get the deleteOption property: Specifies whether OS Disk should be deleted or detached upon VMSS Flex deletion * (This feature is available for VMSS with Flexible OrchestrationMode only). <br><br> Possible values: * <br><br> **Delete** If this value is used, the OS disk is deleted when VMSS Flex VM is * deleted.<br><br> **Detach** If this value is used, the OS disk is retained after VMSS Flex VM is * deleted. <br><br> The default value is set to **Delete**. For an Ephemeral OS Disk, the default value * is set to **Delete**. User cannot change the delete option for Ephemeral OS Disk. * * @return the deleteOption value. */ public DiskDeleteOptionTypes deleteOption() { return this.deleteOption; } /** * Set the deleteOption property: Specifies whether OS Disk should be deleted or detached upon VMSS Flex deletion * (This feature is available for VMSS with Flexible OrchestrationMode only). <br><br> Possible values: * <br><br> **Delete** If this value is used, the OS disk is deleted when VMSS Flex VM is * deleted.<br><br> **Detach** If this value is used, the OS disk is retained after VMSS Flex VM is * deleted. <br><br> The default value is set to **Delete**. For an Ephemeral OS Disk, the default value * is set to **Delete**. User cannot change the delete option for Ephemeral OS Disk. * * @param deleteOption the deleteOption value to set. * @return the VirtualMachineScaleSetOSDisk object itself. */ public VirtualMachineScaleSetOSDisk withDeleteOption(DiskDeleteOptionTypes deleteOption) { this.deleteOption = deleteOption; return this; } /** * Validates the instance. * * @throws IllegalArgumentException thrown if the instance is not valid. */ public void validate() { if (createOption() == null) { throw LOGGER.atError() .log(new IllegalArgumentException( "Missing required property createOption in model VirtualMachineScaleSetOSDisk")); } if (diffDiskSettings() != null) { diffDiskSettings().validate(); } if (image() != null) { image().validate(); } if (managedDisk() != null) { managedDisk().validate(); } } private static final ClientLogger LOGGER = new ClientLogger(VirtualMachineScaleSetOSDisk.class); /** * {@inheritDoc} */ @Override public JsonWriter toJson(JsonWriter jsonWriter) throws IOException { jsonWriter.writeStartObject(); jsonWriter.writeStringField("createOption", this.createOption == null ? null : this.createOption.toString()); jsonWriter.writeStringField("name", this.name); jsonWriter.writeStringField("caching", this.caching == null ? null : this.caching.toString()); jsonWriter.writeBooleanField("writeAcceleratorEnabled", this.writeAcceleratorEnabled); jsonWriter.writeJsonField("diffDiskSettings", this.diffDiskSettings); jsonWriter.writeNumberField("diskSizeGB", this.diskSizeGB); jsonWriter.writeStringField("osType", this.osType == null ? null : this.osType.toString()); jsonWriter.writeJsonField("image", this.image); jsonWriter.writeArrayField("vhdContainers", this.vhdContainers, (writer, element) -> writer.writeString(element)); jsonWriter.writeJsonField("managedDisk", this.managedDisk); jsonWriter.writeStringField("deleteOption", this.deleteOption == null ? null : this.deleteOption.toString()); return jsonWriter.writeEndObject(); } /** * Reads an instance of VirtualMachineScaleSetOSDisk from the JsonReader. * * @param jsonReader The JsonReader being read. * @return An instance of VirtualMachineScaleSetOSDisk if the JsonReader was pointing to an instance of it, or null * if it was pointing to JSON null. * @throws IllegalStateException If the deserialized JSON object was missing any required properties. * @throws IOException If an error occurs while reading the VirtualMachineScaleSetOSDisk. */ public static VirtualMachineScaleSetOSDisk fromJson(JsonReader jsonReader) throws IOException { return jsonReader.readObject(reader -> { VirtualMachineScaleSetOSDisk deserializedVirtualMachineScaleSetOSDisk = new VirtualMachineScaleSetOSDisk(); while (reader.nextToken() != JsonToken.END_OBJECT) { String fieldName = reader.getFieldName(); reader.nextToken(); if ("createOption".equals(fieldName)) { deserializedVirtualMachineScaleSetOSDisk.createOption = DiskCreateOptionTypes.fromString(reader.getString()); } else if ("name".equals(fieldName)) { deserializedVirtualMachineScaleSetOSDisk.name = reader.getString(); } else if ("caching".equals(fieldName)) { deserializedVirtualMachineScaleSetOSDisk.caching = CachingTypes.fromString(reader.getString()); } else if ("writeAcceleratorEnabled".equals(fieldName)) { deserializedVirtualMachineScaleSetOSDisk.writeAcceleratorEnabled = reader.getNullable(JsonReader::getBoolean); } else if ("diffDiskSettings".equals(fieldName)) { deserializedVirtualMachineScaleSetOSDisk.diffDiskSettings = DiffDiskSettings.fromJson(reader); } else if ("diskSizeGB".equals(fieldName)) { deserializedVirtualMachineScaleSetOSDisk.diskSizeGB = reader.getNullable(JsonReader::getInt); } else if ("osType".equals(fieldName)) { deserializedVirtualMachineScaleSetOSDisk.osType = OperatingSystemTypes.fromString(reader.getString()); } else if ("image".equals(fieldName)) { deserializedVirtualMachineScaleSetOSDisk.image = VirtualHardDisk.fromJson(reader); } else if ("vhdContainers".equals(fieldName)) { List vhdContainers = reader.readArray(reader1 -> reader1.getString()); deserializedVirtualMachineScaleSetOSDisk.vhdContainers = vhdContainers; } else if ("managedDisk".equals(fieldName)) { deserializedVirtualMachineScaleSetOSDisk.managedDisk = VirtualMachineScaleSetManagedDiskParameters.fromJson(reader); } else if ("deleteOption".equals(fieldName)) { deserializedVirtualMachineScaleSetOSDisk.deleteOption = DiskDeleteOptionTypes.fromString(reader.getString()); } else { reader.skipChildren(); } } return deserializedVirtualMachineScaleSetOSDisk; }); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy