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

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.Objects;


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

    public static final AzureClusterControlPlaneReplicaPlacementArgs Empty = new AzureClusterControlPlaneReplicaPlacementArgs();

    /**
     * For a given replica, the Azure availability zone where to provision the control plane VM and the ETCD disk.
     * 
     */
    @Import(name="azureAvailabilityZone", required=true)
    private Output<String> azureAvailabilityZone;

    /**
     * @return For a given replica, the Azure availability zone where to provision the control plane VM and the ETCD disk.
     * 
     */
    public Output<String> azureAvailabilityZone() {
        return this.azureAvailabilityZone;
    }

    /**
     * For a given replica, the ARM ID of the subnet where the control plane VM is deployed. Make sure it&#39;s a subnet under the virtual network in the cluster configuration.
     * 
     */
    @Import(name="subnetId", required=true)
    private Output<String> subnetId;

    /**
     * @return For a given replica, the ARM ID of the subnet where the control plane VM is deployed. Make sure it&#39;s a subnet under the virtual network in the cluster configuration.
     * 
     */
    public Output<String> subnetId() {
        return this.subnetId;
    }

    private AzureClusterControlPlaneReplicaPlacementArgs() {}

    private AzureClusterControlPlaneReplicaPlacementArgs(AzureClusterControlPlaneReplicaPlacementArgs $) {
        this.azureAvailabilityZone = $.azureAvailabilityZone;
        this.subnetId = $.subnetId;
    }

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

    public static final class Builder {
        private AzureClusterControlPlaneReplicaPlacementArgs $;

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

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

        /**
         * @param azureAvailabilityZone For a given replica, the Azure availability zone where to provision the control plane VM and the ETCD disk.
         * 
         * @return builder
         * 
         */
        public Builder azureAvailabilityZone(Output<String> azureAvailabilityZone) {
            $.azureAvailabilityZone = azureAvailabilityZone;
            return this;
        }

        /**
         * @param azureAvailabilityZone For a given replica, the Azure availability zone where to provision the control plane VM and the ETCD disk.
         * 
         * @return builder
         * 
         */
        public Builder azureAvailabilityZone(String azureAvailabilityZone) {
            return azureAvailabilityZone(Output.of(azureAvailabilityZone));
        }

        /**
         * @param subnetId For a given replica, the ARM ID of the subnet where the control plane VM is deployed. Make sure it&#39;s a subnet under the virtual network in the cluster configuration.
         * 
         * @return builder
         * 
         */
        public Builder subnetId(Output<String> subnetId) {
            $.subnetId = subnetId;
            return this;
        }

        /**
         * @param subnetId For a given replica, the ARM ID of the subnet where the control plane VM is deployed. Make sure it&#39;s a subnet under the virtual network in the cluster configuration.
         * 
         * @return builder
         * 
         */
        public Builder subnetId(String subnetId) {
            return subnetId(Output.of(subnetId));
        }

        public AzureClusterControlPlaneReplicaPlacementArgs build() {
            $.azureAvailabilityZone = Objects.requireNonNull($.azureAvailabilityZone, "expected parameter 'azureAvailabilityZone' to be non-null");
            $.subnetId = Objects.requireNonNull($.subnetId, "expected parameter 'subnetId' to be non-null");
            return $;
        }
    }

}
