All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.linode.LkeClusterArgs Maven / Gradle / Ivy

There is a newer version: 4.31.0-alpha.1732773076
Show newest version
// *** 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.linode;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.exceptions.MissingRequiredPropertyException;
import com.pulumi.linode.inputs.LkeClusterControlPlaneArgs;
import com.pulumi.linode.inputs.LkeClusterPoolArgs;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final LkeClusterArgs Empty = new LkeClusterArgs();

    /**
     * Defines settings for the Kubernetes Control Plane.
     * 
     */
    @Import(name="controlPlane")
    private @Nullable Output controlPlane;

    /**
     * @return Defines settings for the Kubernetes Control Plane.
     * 
     */
    public Optional> controlPlane() {
        return Optional.ofNullable(this.controlPlane);
    }

    /**
     * A set of node pool tags to ignore when planning and applying this cluster. This prevents externally managed node pools from being deleted or unintentionally updated on subsequent applies. See Externally Managed Node Pools for more details.
     * 
     */
    @Import(name="externalPoolTags")
    private @Nullable Output> externalPoolTags;

    /**
     * @return A set of node pool tags to ignore when planning and applying this cluster. This prevents externally managed node pools from being deleted or unintentionally updated on subsequent applies. See Externally Managed Node Pools for more details.
     * 
     */
    public Optional>> externalPoolTags() {
        return Optional.ofNullable(this.externalPoolTags);
    }

    /**
     * The desired Kubernetes version for this Kubernetes cluster in the format of `major.minor` (e.g. `1.21`), and the latest supported patch version will be deployed.
     * 
     */
    @Import(name="k8sVersion", required=true)
    private Output k8sVersion;

    /**
     * @return The desired Kubernetes version for this Kubernetes cluster in the format of `major.minor` (e.g. `1.21`), and the latest supported patch version will be deployed.
     * 
     */
    public Output k8sVersion() {
        return this.k8sVersion;
    }

    /**
     * This Kubernetes cluster's unique label.
     * 
     */
    @Import(name="label", required=true)
    private Output label;

    /**
     * @return This Kubernetes cluster's unique label.
     * 
     */
    public Output label() {
        return this.label;
    }

    /**
     * Additional nested attributes:
     * 
     */
    @Import(name="pools", required=true)
    private Output> pools;

    /**
     * @return Additional nested attributes:
     * 
     */
    public Output> pools() {
        return this.pools;
    }

    /**
     * This Kubernetes cluster's location.
     * 
     * * `pool` - (Required) The Node Pool specifications for the Kubernetes cluster. At least one Node Pool is required.
     * 
     * * `control_plane` (Optional) Defines settings for the Kubernetes Control Plane.
     * 
     */
    @Import(name="region", required=true)
    private Output region;

    /**
     * @return This Kubernetes cluster's location.
     * 
     * * `pool` - (Required) The Node Pool specifications for the Kubernetes cluster. At least one Node Pool is required.
     * 
     * * `control_plane` (Optional) Defines settings for the Kubernetes Control Plane.
     * 
     */
    public Output region() {
        return this.region;
    }

    /**
     * An array of tags applied to the Kubernetes cluster. Tags are case-insensitive and are for organizational purposes only.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return An array of tags applied to the Kubernetes cluster. Tags are case-insensitive and are for organizational purposes only.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    private LkeClusterArgs() {}

    private LkeClusterArgs(LkeClusterArgs $) {
        this.controlPlane = $.controlPlane;
        this.externalPoolTags = $.externalPoolTags;
        this.k8sVersion = $.k8sVersion;
        this.label = $.label;
        this.pools = $.pools;
        this.region = $.region;
        this.tags = $.tags;
    }

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

    public static final class Builder {
        private LkeClusterArgs $;

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

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

        /**
         * @param controlPlane Defines settings for the Kubernetes Control Plane.
         * 
         * @return builder
         * 
         */
        public Builder controlPlane(@Nullable Output controlPlane) {
            $.controlPlane = controlPlane;
            return this;
        }

        /**
         * @param controlPlane Defines settings for the Kubernetes Control Plane.
         * 
         * @return builder
         * 
         */
        public Builder controlPlane(LkeClusterControlPlaneArgs controlPlane) {
            return controlPlane(Output.of(controlPlane));
        }

        /**
         * @param externalPoolTags A set of node pool tags to ignore when planning and applying this cluster. This prevents externally managed node pools from being deleted or unintentionally updated on subsequent applies. See Externally Managed Node Pools for more details.
         * 
         * @return builder
         * 
         */
        public Builder externalPoolTags(@Nullable Output> externalPoolTags) {
            $.externalPoolTags = externalPoolTags;
            return this;
        }

        /**
         * @param externalPoolTags A set of node pool tags to ignore when planning and applying this cluster. This prevents externally managed node pools from being deleted or unintentionally updated on subsequent applies. See Externally Managed Node Pools for more details.
         * 
         * @return builder
         * 
         */
        public Builder externalPoolTags(List externalPoolTags) {
            return externalPoolTags(Output.of(externalPoolTags));
        }

        /**
         * @param externalPoolTags A set of node pool tags to ignore when planning and applying this cluster. This prevents externally managed node pools from being deleted or unintentionally updated on subsequent applies. See Externally Managed Node Pools for more details.
         * 
         * @return builder
         * 
         */
        public Builder externalPoolTags(String... externalPoolTags) {
            return externalPoolTags(List.of(externalPoolTags));
        }

        /**
         * @param k8sVersion The desired Kubernetes version for this Kubernetes cluster in the format of `major.minor` (e.g. `1.21`), and the latest supported patch version will be deployed.
         * 
         * @return builder
         * 
         */
        public Builder k8sVersion(Output k8sVersion) {
            $.k8sVersion = k8sVersion;
            return this;
        }

        /**
         * @param k8sVersion The desired Kubernetes version for this Kubernetes cluster in the format of `major.minor` (e.g. `1.21`), and the latest supported patch version will be deployed.
         * 
         * @return builder
         * 
         */
        public Builder k8sVersion(String k8sVersion) {
            return k8sVersion(Output.of(k8sVersion));
        }

        /**
         * @param label This Kubernetes cluster's unique label.
         * 
         * @return builder
         * 
         */
        public Builder label(Output label) {
            $.label = label;
            return this;
        }

        /**
         * @param label This Kubernetes cluster's unique label.
         * 
         * @return builder
         * 
         */
        public Builder label(String label) {
            return label(Output.of(label));
        }

        /**
         * @param pools Additional nested attributes:
         * 
         * @return builder
         * 
         */
        public Builder pools(Output> pools) {
            $.pools = pools;
            return this;
        }

        /**
         * @param pools Additional nested attributes:
         * 
         * @return builder
         * 
         */
        public Builder pools(List pools) {
            return pools(Output.of(pools));
        }

        /**
         * @param pools Additional nested attributes:
         * 
         * @return builder
         * 
         */
        public Builder pools(LkeClusterPoolArgs... pools) {
            return pools(List.of(pools));
        }

        /**
         * @param region This Kubernetes cluster's location.
         * 
         * * `pool` - (Required) The Node Pool specifications for the Kubernetes cluster. At least one Node Pool is required.
         * 
         * * `control_plane` (Optional) Defines settings for the Kubernetes Control Plane.
         * 
         * @return builder
         * 
         */
        public Builder region(Output region) {
            $.region = region;
            return this;
        }

        /**
         * @param region This Kubernetes cluster's location.
         * 
         * * `pool` - (Required) The Node Pool specifications for the Kubernetes cluster. At least one Node Pool is required.
         * 
         * * `control_plane` (Optional) Defines settings for the Kubernetes Control Plane.
         * 
         * @return builder
         * 
         */
        public Builder region(String region) {
            return region(Output.of(region));
        }

        /**
         * @param tags An array of tags applied to the Kubernetes cluster. Tags are case-insensitive and are for organizational purposes only.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags An array of tags applied to the Kubernetes cluster. Tags are case-insensitive and are for organizational purposes only.
         * 
         * @return builder
         * 
         */
        public Builder tags(List tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param tags An array of tags applied to the Kubernetes cluster. Tags are case-insensitive and are for organizational purposes only.
         * 
         * @return builder
         * 
         */
        public Builder tags(String... tags) {
            return tags(List.of(tags));
        }

        public LkeClusterArgs build() {
            if ($.k8sVersion == null) {
                throw new MissingRequiredPropertyException("LkeClusterArgs", "k8sVersion");
            }
            if ($.label == null) {
                throw new MissingRequiredPropertyException("LkeClusterArgs", "label");
            }
            if ($.pools == null) {
                throw new MissingRequiredPropertyException("LkeClusterArgs", "pools");
            }
            if ($.region == null) {
                throw new MissingRequiredPropertyException("LkeClusterArgs", "region");
            }
            return $;
        }
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy