// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.resourcemanager.devtestlabs.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;

/** Properties to attach new disk to the Virtual Machine. */
@Fluent
public final class AttachNewDataDiskOptions {
    /*
     * Size of the disk to be attached in Gibibytes.
     */
    @JsonProperty(value = "diskSizeGiB")
    private Integer diskSizeGiB;

    /*
     * The name of the disk to be attached.
     */
    @JsonProperty(value = "diskName")
    private String diskName;

    /*
     * The storage type for the disk (i.e. Standard, Premium).
     */
    @JsonProperty(value = "diskType")
    private StorageType diskType;

    /** Creates an instance of AttachNewDataDiskOptions class. */
    public AttachNewDataDiskOptions() {
    }

    /**
     * Get the diskSizeGiB property: Size of the disk to be attached in Gibibytes.
     *
     * @return the diskSizeGiB value.
     */
    public Integer diskSizeGiB() {
        return this.diskSizeGiB;
    }

    /**
     * Set the diskSizeGiB property: Size of the disk to be attached in Gibibytes.
     *
     * @param diskSizeGiB the diskSizeGiB value to set.
     * @return the AttachNewDataDiskOptions object itself.
     */
    public AttachNewDataDiskOptions withDiskSizeGiB(Integer diskSizeGiB) {
        this.diskSizeGiB = diskSizeGiB;
        return this;
    }

    /**
     * Get the diskName property: The name of the disk to be attached.
     *
     * @return the diskName value.
     */
    public String diskName() {
        return this.diskName;
    }

    /**
     * Set the diskName property: The name of the disk to be attached.
     *
     * @param diskName the diskName value to set.
     * @return the AttachNewDataDiskOptions object itself.
     */
    public AttachNewDataDiskOptions withDiskName(String diskName) {
        this.diskName = diskName;
        return this;
    }

    /**
     * Get the diskType property: The storage type for the disk (i.e. Standard, Premium).
     *
     * @return the diskType value.
     */
    public StorageType diskType() {
        return this.diskType;
    }

    /**
     * Set the diskType property: The storage type for the disk (i.e. Standard, Premium).
     *
     * @param diskType the diskType value to set.
     * @return the AttachNewDataDiskOptions object itself.
     */
    public AttachNewDataDiskOptions withDiskType(StorageType diskType) {
        this.diskType = diskType;
        return this;
    }

    /**
     * Validates the instance.
     *
     * @throws IllegalArgumentException thrown if the instance is not valid.
     */
    public void validate() {
    }
}
