// 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;

/** Disk Details. */
@Fluent
public final class OSDetails {
    /*
     * VM Disk details.
     */
    @JsonProperty(value = "osType")
    private String osType;

    /*
     * Product type.
     */
    @JsonProperty(value = "productType")
    private String productType;

    /*
     * The OSEdition.
     */
    @JsonProperty(value = "osEdition")
    private String osEdition;

    /*
     * The OS Version.
     */
    @JsonProperty(value = "oSVersion")
    private String oSVersion;

    /*
     * The OS Major Version.
     */
    @JsonProperty(value = "oSMajorVersion")
    private String oSMajorVersion;

    /*
     * The OS Minor Version.
     */
    @JsonProperty(value = "oSMinorVersion")
    private String oSMinorVersion;

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

    /**
     * Get the osType property: VM Disk details.
     *
     * @return the osType value.
     */
    public String osType() {
        return this.osType;
    }

    /**
     * Set the osType property: VM Disk details.
     *
     * @param osType the osType value to set.
     * @return the OSDetails object itself.
     */
    public OSDetails withOsType(String osType) {
        this.osType = osType;
        return this;
    }

    /**
     * Get the productType property: Product type.
     *
     * @return the productType value.
     */
    public String productType() {
        return this.productType;
    }

    /**
     * Set the productType property: Product type.
     *
     * @param productType the productType value to set.
     * @return the OSDetails object itself.
     */
    public OSDetails withProductType(String productType) {
        this.productType = productType;
        return this;
    }

    /**
     * Get the osEdition property: The OSEdition.
     *
     * @return the osEdition value.
     */
    public String osEdition() {
        return this.osEdition;
    }

    /**
     * Set the osEdition property: The OSEdition.
     *
     * @param osEdition the osEdition value to set.
     * @return the OSDetails object itself.
     */
    public OSDetails withOsEdition(String osEdition) {
        this.osEdition = osEdition;
        return this;
    }

    /**
     * Get the oSVersion property: The OS Version.
     *
     * @return the oSVersion value.
     */
    public String oSVersion() {
        return this.oSVersion;
    }

    /**
     * Set the oSVersion property: The OS Version.
     *
     * @param oSVersion the oSVersion value to set.
     * @return the OSDetails object itself.
     */
    public OSDetails withOSVersion(String oSVersion) {
        this.oSVersion = oSVersion;
        return this;
    }

    /**
     * Get the oSMajorVersion property: The OS Major Version.
     *
     * @return the oSMajorVersion value.
     */
    public String oSMajorVersion() {
        return this.oSMajorVersion;
    }

    /**
     * Set the oSMajorVersion property: The OS Major Version.
     *
     * @param oSMajorVersion the oSMajorVersion value to set.
     * @return the OSDetails object itself.
     */
    public OSDetails withOSMajorVersion(String oSMajorVersion) {
        this.oSMajorVersion = oSMajorVersion;
        return this;
    }

    /**
     * Get the oSMinorVersion property: The OS Minor Version.
     *
     * @return the oSMinorVersion value.
     */
    public String oSMinorVersion() {
        return this.oSMinorVersion;
    }

    /**
     * Set the oSMinorVersion property: The OS Minor Version.
     *
     * @param oSMinorVersion the oSMinorVersion value to set.
     * @return the OSDetails object itself.
     */
    public OSDetails withOSMinorVersion(String oSMinorVersion) {
        this.oSMinorVersion = oSMinorVersion;
        return this;
    }

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