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

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

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

/** Volume Quota Rule properties. */
@Fluent
public final class VolumeQuotaRulesProperties {
    /*
     * Gets the status of the VolumeQuotaRule at the time the operation was called.
     */
    @JsonProperty(value = "provisioningState", access = JsonProperty.Access.WRITE_ONLY)
    private ProvisioningState provisioningState;

    /*
     * Size of quota
     */
    @JsonProperty(value = "quotaSizeInKiBs")
    private Long quotaSizeInKiBs;

    /*
     * quotaType
     *
     * Type of quota
     */
    @JsonProperty(value = "quotaType")
    private Type quotaType;

    /*
     * UserID/GroupID/SID based on the quota target type. UserID and groupID can be found by running ‘id’ or ‘getent’
     * command for the user or group and SID can be found by running <wmic useraccount where name='user-name' get sid>
     */
    @JsonProperty(value = "quotaTarget")
    private String quotaTarget;

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

    /**
     * Get the provisioningState property: Gets the status of the VolumeQuotaRule at the time the operation was called.
     *
     * @return the provisioningState value.
     */
    public ProvisioningState provisioningState() {
        return this.provisioningState;
    }

    /**
     * Get the quotaSizeInKiBs property: Size of quota.
     *
     * @return the quotaSizeInKiBs value.
     */
    public Long quotaSizeInKiBs() {
        return this.quotaSizeInKiBs;
    }

    /**
     * Set the quotaSizeInKiBs property: Size of quota.
     *
     * @param quotaSizeInKiBs the quotaSizeInKiBs value to set.
     * @return the VolumeQuotaRulesProperties object itself.
     */
    public VolumeQuotaRulesProperties withQuotaSizeInKiBs(Long quotaSizeInKiBs) {
        this.quotaSizeInKiBs = quotaSizeInKiBs;
        return this;
    }

    /**
     * Get the quotaType property: quotaType
     *
     * <p>Type of quota.
     *
     * @return the quotaType value.
     */
    public Type quotaType() {
        return this.quotaType;
    }

    /**
     * Set the quotaType property: quotaType
     *
     * <p>Type of quota.
     *
     * @param quotaType the quotaType value to set.
     * @return the VolumeQuotaRulesProperties object itself.
     */
    public VolumeQuotaRulesProperties withQuotaType(Type quotaType) {
        this.quotaType = quotaType;
        return this;
    }

    /**
     * Get the quotaTarget property: UserID/GroupID/SID based on the quota target type. UserID and groupID can be found
     * by running ‘id’ or ‘getent’ command for the user or group and SID can be found by running &lt;wmic useraccount
     * where name='user-name' get sid&gt;.
     *
     * @return the quotaTarget value.
     */
    public String quotaTarget() {
        return this.quotaTarget;
    }

    /**
     * Set the quotaTarget property: UserID/GroupID/SID based on the quota target type. UserID and groupID can be found
     * by running ‘id’ or ‘getent’ command for the user or group and SID can be found by running &lt;wmic useraccount
     * where name='user-name' get sid&gt;.
     *
     * @param quotaTarget the quotaTarget value to set.
     * @return the VolumeQuotaRulesProperties object itself.
     */
    public VolumeQuotaRulesProperties withQuotaTarget(String quotaTarget) {
        this.quotaTarget = quotaTarget;
        return this;
    }

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