// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.kubernetes.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.core.internal.Codegen;
import java.lang.Double;
import java.lang.Integer;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


/**
 * Options for tuning the Kubernetes client used by a Provider.
 * 
 */
public final class KubeClientSettingsArgs extends com.pulumi.resources.ResourceArgs {

    public static final KubeClientSettingsArgs Empty = new KubeClientSettingsArgs();

    /**
     * Maximum burst for throttle. Default value is 10.
     * 
     */
    @Import(name="burst")
    private @Nullable Output<Integer> burst;

    /**
     * @return Maximum burst for throttle. Default value is 10.
     * 
     */
    public Optional<Output<Integer>> burst() {
        return Optional.ofNullable(this.burst);
    }

    /**
     * Maximum queries per second (QPS) to the API server from this client. Default value is 5.
     * 
     */
    @Import(name="qps")
    private @Nullable Output<Double> qps;

    /**
     * @return Maximum queries per second (QPS) to the API server from this client. Default value is 5.
     * 
     */
    public Optional<Output<Double>> qps() {
        return Optional.ofNullable(this.qps);
    }

    /**
     * Maximum time in seconds to wait before cancelling a HTTP request to the Kubernetes server. Default value is 32.
     * 
     */
    @Import(name="timeout")
    private @Nullable Output<Integer> timeout;

    /**
     * @return Maximum time in seconds to wait before cancelling a HTTP request to the Kubernetes server. Default value is 32.
     * 
     */
    public Optional<Output<Integer>> timeout() {
        return Optional.ofNullable(this.timeout);
    }

    private KubeClientSettingsArgs() {}

    private KubeClientSettingsArgs(KubeClientSettingsArgs $) {
        this.burst = $.burst;
        this.qps = $.qps;
        this.timeout = $.timeout;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(KubeClientSettingsArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private KubeClientSettingsArgs $;

        public Builder() {
            $ = new KubeClientSettingsArgs();
        }

        public Builder(KubeClientSettingsArgs defaults) {
            $ = new KubeClientSettingsArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param burst Maximum burst for throttle. Default value is 10.
         * 
         * @return builder
         * 
         */
        public Builder burst(@Nullable Output<Integer> burst) {
            $.burst = burst;
            return this;
        }

        /**
         * @param burst Maximum burst for throttle. Default value is 10.
         * 
         * @return builder
         * 
         */
        public Builder burst(Integer burst) {
            return burst(Output.of(burst));
        }

        /**
         * @param qps Maximum queries per second (QPS) to the API server from this client. Default value is 5.
         * 
         * @return builder
         * 
         */
        public Builder qps(@Nullable Output<Double> qps) {
            $.qps = qps;
            return this;
        }

        /**
         * @param qps Maximum queries per second (QPS) to the API server from this client. Default value is 5.
         * 
         * @return builder
         * 
         */
        public Builder qps(Double qps) {
            return qps(Output.of(qps));
        }

        /**
         * @param timeout Maximum time in seconds to wait before cancelling a HTTP request to the Kubernetes server. Default value is 32.
         * 
         * @return builder
         * 
         */
        public Builder timeout(@Nullable Output<Integer> timeout) {
            $.timeout = timeout;
            return this;
        }

        /**
         * @param timeout Maximum time in seconds to wait before cancelling a HTTP request to the Kubernetes server. Default value is 32.
         * 
         * @return builder
         * 
         */
        public Builder timeout(Integer timeout) {
            return timeout(Output.of(timeout));
        }

        public KubeClientSettingsArgs build() {
            $.burst = Codegen.integerProp("burst").output().arg($.burst).env("PULUMI_K8S_CLIENT_BURST").getNullable();
            $.qps = Codegen.doubleProp("qps").output().arg($.qps).env("PULUMI_K8S_CLIENT_QPS").getNullable();
            $.timeout = Codegen.integerProp("timeout").output().arg($.timeout).env("PULUMI_K8S_CLIENT_TIMEOUT").getNullable();
            return $;
        }
    }

}
