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

package com.azure.resourcemanager.managednetworkfabric.fluent.models;

import com.azure.core.annotation.Fluent;
import com.azure.resourcemanager.managednetworkfabric.models.ProvisioningState;
import com.fasterxml.jackson.annotation.JsonProperty;

/** NetworkFabricSkuProperties define the resource properties. */
@Fluent
public final class NetworkFabricSkuProperties {
    /*
     * Type of Network Fabric Sku.
     */
    @JsonProperty(value = "type", access = JsonProperty.Access.WRITE_ONLY)
    private String type;

    /*
     * Maximum number of compute racks available for this Network Fabric SKU.
     */
    @JsonProperty(value = "maxComputeRacks")
    private Integer maxComputeRacks;

    /*
     * Minimum supported version.
     */
    @JsonProperty(value = "minSupportedVer", access = JsonProperty.Access.WRITE_ONLY)
    private String minSupportedVer;

    /*
     * Maximum supported version.
     */
    @JsonProperty(value = "maxSupportedVer", access = JsonProperty.Access.WRITE_ONLY)
    private String maxSupportedVer;

    /*
     * The URI gives full details of sku.
     */
    @JsonProperty(value = "detailsUri", access = JsonProperty.Access.WRITE_ONLY)
    private String detailsUri;

    /*
     * Gets the provisioning state of the resource.
     */
    @JsonProperty(value = "provisioningState", access = JsonProperty.Access.WRITE_ONLY)
    private ProvisioningState provisioningState;

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

    /**
     * Get the type property: Type of Network Fabric Sku.
     *
     * @return the type value.
     */
    public String type() {
        return this.type;
    }

    /**
     * Get the maxComputeRacks property: Maximum number of compute racks available for this Network Fabric SKU.
     *
     * @return the maxComputeRacks value.
     */
    public Integer maxComputeRacks() {
        return this.maxComputeRacks;
    }

    /**
     * Set the maxComputeRacks property: Maximum number of compute racks available for this Network Fabric SKU.
     *
     * @param maxComputeRacks the maxComputeRacks value to set.
     * @return the NetworkFabricSkuProperties object itself.
     */
    public NetworkFabricSkuProperties withMaxComputeRacks(Integer maxComputeRacks) {
        this.maxComputeRacks = maxComputeRacks;
        return this;
    }

    /**
     * Get the minSupportedVer property: Minimum supported version.
     *
     * @return the minSupportedVer value.
     */
    public String minSupportedVer() {
        return this.minSupportedVer;
    }

    /**
     * Get the maxSupportedVer property: Maximum supported version.
     *
     * @return the maxSupportedVer value.
     */
    public String maxSupportedVer() {
        return this.maxSupportedVer;
    }

    /**
     * Get the detailsUri property: The URI gives full details of sku.
     *
     * @return the detailsUri value.
     */
    public String detailsUri() {
        return this.detailsUri;
    }

    /**
     * Get the provisioningState property: Gets the provisioning state of the resource.
     *
     * @return the provisioningState value.
     */
    public ProvisioningState provisioningState() {
        return this.provisioningState;
    }

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