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

package com.azure.resourcemanager.recoveryservicessiterecovery.models;

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

/** VMwareCbt protected disk details. */
@Fluent
public final class VMwareCbtProtectedDiskDetails {
    /*
     * The disk id.
     */
    @JsonProperty(value = "diskId", access = JsonProperty.Access.WRITE_ONLY)
    private String diskId;

    /*
     * The disk name.
     */
    @JsonProperty(value = "diskName", access = JsonProperty.Access.WRITE_ONLY)
    private String diskName;

    /*
     * The disk type.
     */
    @JsonProperty(value = "diskType")
    private DiskAccountType diskType;

    /*
     * The disk path.
     */
    @JsonProperty(value = "diskPath", access = JsonProperty.Access.WRITE_ONLY)
    private String diskPath;

    /*
     * A value indicating whether the disk is the OS disk.
     */
    @JsonProperty(value = "isOSDisk", access = JsonProperty.Access.WRITE_ONLY)
    private String isOSDisk;

    /*
     * The disk capacity in bytes.
     */
    @JsonProperty(value = "capacityInBytes", access = JsonProperty.Access.WRITE_ONLY)
    private Long capacityInBytes;

    /*
     * The log storage account ARM Id.
     */
    @JsonProperty(value = "logStorageAccountId", access = JsonProperty.Access.WRITE_ONLY)
    private String logStorageAccountId;

    /*
     * The key vault secret name of the log storage account.
     */
    @JsonProperty(value = "logStorageAccountSasSecretName", access = JsonProperty.Access.WRITE_ONLY)
    private String logStorageAccountSasSecretName;

    /*
     * The DiskEncryptionSet ARM Id.
     */
    @JsonProperty(value = "diskEncryptionSetId", access = JsonProperty.Access.WRITE_ONLY)
    private String diskEncryptionSetId;

    /*
     * The ARM Id of the seed managed disk.
     */
    @JsonProperty(value = "seedManagedDiskId", access = JsonProperty.Access.WRITE_ONLY)
    private String seedManagedDiskId;

    /*
     * The uri of the seed blob.
     */
    @JsonProperty(value = "seedBlobUri", access = JsonProperty.Access.WRITE_ONLY)
    private String seedBlobUri;

    /*
     * The ARM Id of the target managed disk.
     */
    @JsonProperty(value = "targetManagedDiskId", access = JsonProperty.Access.WRITE_ONLY)
    private String targetManagedDiskId;

    /*
     * The uri of the target blob.
     */
    @JsonProperty(value = "targetBlobUri", access = JsonProperty.Access.WRITE_ONLY)
    private String targetBlobUri;

    /*
     * The name for the target managed disk.
     */
    @JsonProperty(value = "targetDiskName")
    private String targetDiskName;

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

    /**
     * Get the diskId property: The disk id.
     *
     * @return the diskId value.
     */
    public String diskId() {
        return this.diskId;
    }

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

    /**
     * Get the diskType property: The disk type.
     *
     * @return the diskType value.
     */
    public DiskAccountType diskType() {
        return this.diskType;
    }

    /**
     * Set the diskType property: The disk type.
     *
     * @param diskType the diskType value to set.
     * @return the VMwareCbtProtectedDiskDetails object itself.
     */
    public VMwareCbtProtectedDiskDetails withDiskType(DiskAccountType diskType) {
        this.diskType = diskType;
        return this;
    }

    /**
     * Get the diskPath property: The disk path.
     *
     * @return the diskPath value.
     */
    public String diskPath() {
        return this.diskPath;
    }

    /**
     * Get the isOSDisk property: A value indicating whether the disk is the OS disk.
     *
     * @return the isOSDisk value.
     */
    public String isOSDisk() {
        return this.isOSDisk;
    }

    /**
     * Get the capacityInBytes property: The disk capacity in bytes.
     *
     * @return the capacityInBytes value.
     */
    public Long capacityInBytes() {
        return this.capacityInBytes;
    }

    /**
     * Get the logStorageAccountId property: The log storage account ARM Id.
     *
     * @return the logStorageAccountId value.
     */
    public String logStorageAccountId() {
        return this.logStorageAccountId;
    }

    /**
     * Get the logStorageAccountSasSecretName property: The key vault secret name of the log storage account.
     *
     * @return the logStorageAccountSasSecretName value.
     */
    public String logStorageAccountSasSecretName() {
        return this.logStorageAccountSasSecretName;
    }

    /**
     * Get the diskEncryptionSetId property: The DiskEncryptionSet ARM Id.
     *
     * @return the diskEncryptionSetId value.
     */
    public String diskEncryptionSetId() {
        return this.diskEncryptionSetId;
    }

    /**
     * Get the seedManagedDiskId property: The ARM Id of the seed managed disk.
     *
     * @return the seedManagedDiskId value.
     */
    public String seedManagedDiskId() {
        return this.seedManagedDiskId;
    }

    /**
     * Get the seedBlobUri property: The uri of the seed blob.
     *
     * @return the seedBlobUri value.
     */
    public String seedBlobUri() {
        return this.seedBlobUri;
    }

    /**
     * Get the targetManagedDiskId property: The ARM Id of the target managed disk.
     *
     * @return the targetManagedDiskId value.
     */
    public String targetManagedDiskId() {
        return this.targetManagedDiskId;
    }

    /**
     * Get the targetBlobUri property: The uri of the target blob.
     *
     * @return the targetBlobUri value.
     */
    public String targetBlobUri() {
        return this.targetBlobUri;
    }

    /**
     * Get the targetDiskName property: The name for the target managed disk.
     *
     * @return the targetDiskName value.
     */
    public String targetDiskName() {
        return this.targetDiskName;
    }

    /**
     * Set the targetDiskName property: The name for the target managed disk.
     *
     * @param targetDiskName the targetDiskName value to set.
     * @return the VMwareCbtProtectedDiskDetails object itself.
     */
    public VMwareCbtProtectedDiskDetails withTargetDiskName(String targetDiskName) {
        this.targetDiskName = targetDiskName;
        return this;
    }

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