// *** 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.gcp.composer.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.gcp.composer.inputs.EnvironmentConfigNodeConfigIpAllocationPolicyArgs;
import java.lang.Boolean;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class EnvironmentConfigNodeConfigArgs extends com.pulumi.resources.ResourceArgs {

    public static final EnvironmentConfigNodeConfigArgs Empty = new EnvironmentConfigNodeConfigArgs();

    @Import(name="diskSizeGb")
    private @Nullable Output<Integer> diskSizeGb;

    public Optional<Output<Integer>> diskSizeGb() {
        return Optional.ofNullable(this.diskSizeGb);
    }

    @Import(name="enableIpMasqAgent")
    private @Nullable Output<Boolean> enableIpMasqAgent;

    public Optional<Output<Boolean>> enableIpMasqAgent() {
        return Optional.ofNullable(this.enableIpMasqAgent);
    }

    @Import(name="ipAllocationPolicy")
    private @Nullable Output<EnvironmentConfigNodeConfigIpAllocationPolicyArgs> ipAllocationPolicy;

    public Optional<Output<EnvironmentConfigNodeConfigIpAllocationPolicyArgs>> ipAllocationPolicy() {
        return Optional.ofNullable(this.ipAllocationPolicy);
    }

    @Import(name="machineType")
    private @Nullable Output<String> machineType;

    public Optional<Output<String>> machineType() {
        return Optional.ofNullable(this.machineType);
    }

    @Import(name="maxPodsPerNode")
    private @Nullable Output<Integer> maxPodsPerNode;

    public Optional<Output<Integer>> maxPodsPerNode() {
        return Optional.ofNullable(this.maxPodsPerNode);
    }

    @Import(name="network")
    private @Nullable Output<String> network;

    public Optional<Output<String>> network() {
        return Optional.ofNullable(this.network);
    }

    @Import(name="oauthScopes")
    private @Nullable Output<List<String>> oauthScopes;

    public Optional<Output<List<String>>> oauthScopes() {
        return Optional.ofNullable(this.oauthScopes);
    }

    @Import(name="serviceAccount")
    private @Nullable Output<String> serviceAccount;

    public Optional<Output<String>> serviceAccount() {
        return Optional.ofNullable(this.serviceAccount);
    }

    @Import(name="subnetwork")
    private @Nullable Output<String> subnetwork;

    public Optional<Output<String>> subnetwork() {
        return Optional.ofNullable(this.subnetwork);
    }

    @Import(name="tags")
    private @Nullable Output<List<String>> tags;

    public Optional<Output<List<String>>> tags() {
        return Optional.ofNullable(this.tags);
    }

    @Import(name="zone")
    private @Nullable Output<String> zone;

    public Optional<Output<String>> zone() {
        return Optional.ofNullable(this.zone);
    }

    private EnvironmentConfigNodeConfigArgs() {}

    private EnvironmentConfigNodeConfigArgs(EnvironmentConfigNodeConfigArgs $) {
        this.diskSizeGb = $.diskSizeGb;
        this.enableIpMasqAgent = $.enableIpMasqAgent;
        this.ipAllocationPolicy = $.ipAllocationPolicy;
        this.machineType = $.machineType;
        this.maxPodsPerNode = $.maxPodsPerNode;
        this.network = $.network;
        this.oauthScopes = $.oauthScopes;
        this.serviceAccount = $.serviceAccount;
        this.subnetwork = $.subnetwork;
        this.tags = $.tags;
        this.zone = $.zone;
    }

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

    public static final class Builder {
        private EnvironmentConfigNodeConfigArgs $;

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

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

        public Builder diskSizeGb(@Nullable Output<Integer> diskSizeGb) {
            $.diskSizeGb = diskSizeGb;
            return this;
        }

        public Builder diskSizeGb(Integer diskSizeGb) {
            return diskSizeGb(Output.of(diskSizeGb));
        }

        public Builder enableIpMasqAgent(@Nullable Output<Boolean> enableIpMasqAgent) {
            $.enableIpMasqAgent = enableIpMasqAgent;
            return this;
        }

        public Builder enableIpMasqAgent(Boolean enableIpMasqAgent) {
            return enableIpMasqAgent(Output.of(enableIpMasqAgent));
        }

        public Builder ipAllocationPolicy(@Nullable Output<EnvironmentConfigNodeConfigIpAllocationPolicyArgs> ipAllocationPolicy) {
            $.ipAllocationPolicy = ipAllocationPolicy;
            return this;
        }

        public Builder ipAllocationPolicy(EnvironmentConfigNodeConfigIpAllocationPolicyArgs ipAllocationPolicy) {
            return ipAllocationPolicy(Output.of(ipAllocationPolicy));
        }

        public Builder machineType(@Nullable Output<String> machineType) {
            $.machineType = machineType;
            return this;
        }

        public Builder machineType(String machineType) {
            return machineType(Output.of(machineType));
        }

        public Builder maxPodsPerNode(@Nullable Output<Integer> maxPodsPerNode) {
            $.maxPodsPerNode = maxPodsPerNode;
            return this;
        }

        public Builder maxPodsPerNode(Integer maxPodsPerNode) {
            return maxPodsPerNode(Output.of(maxPodsPerNode));
        }

        public Builder network(@Nullable Output<String> network) {
            $.network = network;
            return this;
        }

        public Builder network(String network) {
            return network(Output.of(network));
        }

        public Builder oauthScopes(@Nullable Output<List<String>> oauthScopes) {
            $.oauthScopes = oauthScopes;
            return this;
        }

        public Builder oauthScopes(List<String> oauthScopes) {
            return oauthScopes(Output.of(oauthScopes));
        }

        public Builder oauthScopes(String... oauthScopes) {
            return oauthScopes(List.of(oauthScopes));
        }

        public Builder serviceAccount(@Nullable Output<String> serviceAccount) {
            $.serviceAccount = serviceAccount;
            return this;
        }

        public Builder serviceAccount(String serviceAccount) {
            return serviceAccount(Output.of(serviceAccount));
        }

        public Builder subnetwork(@Nullable Output<String> subnetwork) {
            $.subnetwork = subnetwork;
            return this;
        }

        public Builder subnetwork(String subnetwork) {
            return subnetwork(Output.of(subnetwork));
        }

        public Builder tags(@Nullable Output<List<String>> tags) {
            $.tags = tags;
            return this;
        }

        public Builder tags(List<String> tags) {
            return tags(Output.of(tags));
        }

        public Builder tags(String... tags) {
            return tags(List.of(tags));
        }

        public Builder zone(@Nullable Output<String> zone) {
            $.zone = zone;
            return this;
        }

        public Builder zone(String zone) {
            return zone(Output.of(zone));
        }

        public EnvironmentConfigNodeConfigArgs build() {
            return $;
        }
    }

}
