// *** 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.aws.eks.outputs;

import com.pulumi.aws.eks.outputs.GetClusterOutpostConfigControlPlanePlacement;
import com.pulumi.core.annotations.CustomType;
import java.lang.String;
import java.util.List;
import java.util.Objects;

@CustomType
public final class GetClusterOutpostConfig {
    /**
     * @return The Amazon EC2 instance type for all Kubernetes control plane instances.
     * 
     */
    private String controlPlaneInstanceType;
    /**
     * @return An object representing the placement configuration for all the control plane instances of your local Amazon EKS cluster on AWS Outpost.
     * 
     */
    private List<GetClusterOutpostConfigControlPlanePlacement> controlPlanePlacements;
    /**
     * @return List of ARNs of the Outposts hosting the EKS cluster. Only a single ARN is supported currently.
     * 
     */
    private List<String> outpostArns;

    private GetClusterOutpostConfig() {}
    /**
     * @return The Amazon EC2 instance type for all Kubernetes control plane instances.
     * 
     */
    public String controlPlaneInstanceType() {
        return this.controlPlaneInstanceType;
    }
    /**
     * @return An object representing the placement configuration for all the control plane instances of your local Amazon EKS cluster on AWS Outpost.
     * 
     */
    public List<GetClusterOutpostConfigControlPlanePlacement> controlPlanePlacements() {
        return this.controlPlanePlacements;
    }
    /**
     * @return List of ARNs of the Outposts hosting the EKS cluster. Only a single ARN is supported currently.
     * 
     */
    public List<String> outpostArns() {
        return this.outpostArns;
    }

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

    public static Builder builder(GetClusterOutpostConfig defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String controlPlaneInstanceType;
        private List<GetClusterOutpostConfigControlPlanePlacement> controlPlanePlacements;
        private List<String> outpostArns;
        public Builder() {}
        public Builder(GetClusterOutpostConfig defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.controlPlaneInstanceType = defaults.controlPlaneInstanceType;
    	      this.controlPlanePlacements = defaults.controlPlanePlacements;
    	      this.outpostArns = defaults.outpostArns;
        }

        @CustomType.Setter
        public Builder controlPlaneInstanceType(String controlPlaneInstanceType) {
            this.controlPlaneInstanceType = Objects.requireNonNull(controlPlaneInstanceType);
            return this;
        }
        @CustomType.Setter
        public Builder controlPlanePlacements(List<GetClusterOutpostConfigControlPlanePlacement> controlPlanePlacements) {
            this.controlPlanePlacements = Objects.requireNonNull(controlPlanePlacements);
            return this;
        }
        public Builder controlPlanePlacements(GetClusterOutpostConfigControlPlanePlacement... controlPlanePlacements) {
            return controlPlanePlacements(List.of(controlPlanePlacements));
        }
        @CustomType.Setter
        public Builder outpostArns(List<String> outpostArns) {
            this.outpostArns = Objects.requireNonNull(outpostArns);
            return this;
        }
        public Builder outpostArns(String... outpostArns) {
            return outpostArns(List.of(outpostArns));
        }
        public GetClusterOutpostConfig build() {
            final var o = new GetClusterOutpostConfig();
            o.controlPlaneInstanceType = controlPlaneInstanceType;
            o.controlPlanePlacements = controlPlanePlacements;
            o.outpostArns = outpostArns;
            return o;
        }
    }
}
