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

com.pulumi.googlenative.spanner.v1.InstanceConfigArgs Maven / Gradle / Ivy

// *** 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.googlenative.spanner.v1;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import com.pulumi.googlenative.spanner.v1.inputs.ReplicaInfoArgs;
import java.lang.Boolean;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final InstanceConfigArgs Empty = new InstanceConfigArgs();

    /**
     * Base configuration name, e.g. projects//instanceConfigs/nam3, based on which this configuration is created. Only set for user managed configurations. `base_config` must refer to a configuration of type GOOGLE_MANAGED in the same project as this configuration.
     * 
     */
    @Import(name="baseConfig")
    private @Nullable Output baseConfig;

    /**
     * @return Base configuration name, e.g. projects//instanceConfigs/nam3, based on which this configuration is created. Only set for user managed configurations. `base_config` must refer to a configuration of type GOOGLE_MANAGED in the same project as this configuration.
     * 
     */
    public Optional> baseConfig() {
        return Optional.ofNullable(this.baseConfig);
    }

    /**
     * The name of this instance configuration as it appears in UIs.
     * 
     */
    @Import(name="displayName")
    private @Nullable Output displayName;

    /**
     * @return The name of this instance configuration as it appears in UIs.
     * 
     */
    public Optional> displayName() {
        return Optional.ofNullable(this.displayName);
    }

    /**
     * etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a instance config from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform instance config updates in order to avoid race conditions: An etag is returned in the response which contains instance configs, and systems are expected to put that etag in the request to update instance config to ensure that their change will be applied to the same version of the instance config. If no etag is provided in the call to update instance config, then the existing instance config is overwritten blindly.
     * 
     */
    @Import(name="etag")
    private @Nullable Output etag;

    /**
     * @return etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a instance config from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform instance config updates in order to avoid race conditions: An etag is returned in the response which contains instance configs, and systems are expected to put that etag in the request to update instance config to ensure that their change will be applied to the same version of the instance config. If no etag is provided in the call to update instance config, then the existing instance config is overwritten blindly.
     * 
     */
    public Optional> etag() {
        return Optional.ofNullable(this.etag);
    }

    /**
     * The ID of the instance config to create. Valid identifiers are of the form `custom-[-a-z0-9]*[a-z0-9]` and must be between 2 and 64 characters in length. The `custom-` prefix is required to avoid name conflicts with Google managed configurations.
     * 
     */
    @Import(name="instanceConfigId", required=true)
    private Output instanceConfigId;

    /**
     * @return The ID of the instance config to create. Valid identifiers are of the form `custom-[-a-z0-9]*[a-z0-9]` and must be between 2 and 64 characters in length. The `custom-` prefix is required to avoid name conflicts with Google managed configurations.
     * 
     */
    public Output instanceConfigId() {
        return this.instanceConfigId;
    }

    /**
     * Cloud Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. Cloud Labels can be used to filter collections of resources. They can be used to control how resource metrics are aggregated. And they can be used as arguments to policy management rules (e.g. route, firewall, load balancing, etc.). * Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `a-z{0,62}`. * Label values must be between 0 and 63 characters long and must conform to the regular expression `[a-z0-9_-]{0,63}`. * No more than 64 labels can be associated with a given resource. See https://goo.gl/xmQnxf for more information on and examples of labels. If you plan to use labels in your own code, please note that additional characters may be allowed in the future. Therefore, you are advised to use an internal label representation, such as JSON, which doesn't rely upon specific characters being disallowed. For example, representing labels as the string: name + "_" + value would prove problematic if we were to allow "_" in a future release.
     * 
     */
    @Import(name="labels")
    private @Nullable Output> labels;

    /**
     * @return Cloud Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. Cloud Labels can be used to filter collections of resources. They can be used to control how resource metrics are aggregated. And they can be used as arguments to policy management rules (e.g. route, firewall, load balancing, etc.). * Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `a-z{0,62}`. * Label values must be between 0 and 63 characters long and must conform to the regular expression `[a-z0-9_-]{0,63}`. * No more than 64 labels can be associated with a given resource. See https://goo.gl/xmQnxf for more information on and examples of labels. If you plan to use labels in your own code, please note that additional characters may be allowed in the future. Therefore, you are advised to use an internal label representation, such as JSON, which doesn't rely upon specific characters being disallowed. For example, representing labels as the string: name + "_" + value would prove problematic if we were to allow "_" in a future release.
     * 
     */
    public Optional>> labels() {
        return Optional.ofNullable(this.labels);
    }

    /**
     * Allowed values of the "default_leader" schema option for databases in instances that use this instance configuration.
     * 
     */
    @Import(name="leaderOptions")
    private @Nullable Output> leaderOptions;

    /**
     * @return Allowed values of the "default_leader" schema option for databases in instances that use this instance configuration.
     * 
     */
    public Optional>> leaderOptions() {
        return Optional.ofNullable(this.leaderOptions);
    }

    /**
     * A unique identifier for the instance configuration. Values are of the form `projects//instanceConfigs/a-z*`.
     * 
     */
    @Import(name="name")
    private @Nullable Output name;

    /**
     * @return A unique identifier for the instance configuration. Values are of the form `projects//instanceConfigs/a-z*`.
     * 
     */
    public Optional> name() {
        return Optional.ofNullable(this.name);
    }

    @Import(name="project")
    private @Nullable Output project;

    public Optional> project() {
        return Optional.ofNullable(this.project);
    }

    /**
     * The geographic placement of nodes in this instance configuration and their replication properties.
     * 
     */
    @Import(name="replicas")
    private @Nullable Output> replicas;

    /**
     * @return The geographic placement of nodes in this instance configuration and their replication properties.
     * 
     */
    public Optional>> replicas() {
        return Optional.ofNullable(this.replicas);
    }

    /**
     * An option to validate, but not actually execute, a request, and provide the same response.
     * 
     */
    @Import(name="validateOnly")
    private @Nullable Output validateOnly;

    /**
     * @return An option to validate, but not actually execute, a request, and provide the same response.
     * 
     */
    public Optional> validateOnly() {
        return Optional.ofNullable(this.validateOnly);
    }

    private InstanceConfigArgs() {}

    private InstanceConfigArgs(InstanceConfigArgs $) {
        this.baseConfig = $.baseConfig;
        this.displayName = $.displayName;
        this.etag = $.etag;
        this.instanceConfigId = $.instanceConfigId;
        this.labels = $.labels;
        this.leaderOptions = $.leaderOptions;
        this.name = $.name;
        this.project = $.project;
        this.replicas = $.replicas;
        this.validateOnly = $.validateOnly;
    }

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

    public static final class Builder {
        private InstanceConfigArgs $;

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

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

        /**
         * @param baseConfig Base configuration name, e.g. projects//instanceConfigs/nam3, based on which this configuration is created. Only set for user managed configurations. `base_config` must refer to a configuration of type GOOGLE_MANAGED in the same project as this configuration.
         * 
         * @return builder
         * 
         */
        public Builder baseConfig(@Nullable Output baseConfig) {
            $.baseConfig = baseConfig;
            return this;
        }

        /**
         * @param baseConfig Base configuration name, e.g. projects//instanceConfigs/nam3, based on which this configuration is created. Only set for user managed configurations. `base_config` must refer to a configuration of type GOOGLE_MANAGED in the same project as this configuration.
         * 
         * @return builder
         * 
         */
        public Builder baseConfig(String baseConfig) {
            return baseConfig(Output.of(baseConfig));
        }

        /**
         * @param displayName The name of this instance configuration as it appears in UIs.
         * 
         * @return builder
         * 
         */
        public Builder displayName(@Nullable Output displayName) {
            $.displayName = displayName;
            return this;
        }

        /**
         * @param displayName The name of this instance configuration as it appears in UIs.
         * 
         * @return builder
         * 
         */
        public Builder displayName(String displayName) {
            return displayName(Output.of(displayName));
        }

        /**
         * @param etag etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a instance config from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform instance config updates in order to avoid race conditions: An etag is returned in the response which contains instance configs, and systems are expected to put that etag in the request to update instance config to ensure that their change will be applied to the same version of the instance config. If no etag is provided in the call to update instance config, then the existing instance config is overwritten blindly.
         * 
         * @return builder
         * 
         */
        public Builder etag(@Nullable Output etag) {
            $.etag = etag;
            return this;
        }

        /**
         * @param etag etag is used for optimistic concurrency control as a way to help prevent simultaneous updates of a instance config from overwriting each other. It is strongly suggested that systems make use of the etag in the read-modify-write cycle to perform instance config updates in order to avoid race conditions: An etag is returned in the response which contains instance configs, and systems are expected to put that etag in the request to update instance config to ensure that their change will be applied to the same version of the instance config. If no etag is provided in the call to update instance config, then the existing instance config is overwritten blindly.
         * 
         * @return builder
         * 
         */
        public Builder etag(String etag) {
            return etag(Output.of(etag));
        }

        /**
         * @param instanceConfigId The ID of the instance config to create. Valid identifiers are of the form `custom-[-a-z0-9]*[a-z0-9]` and must be between 2 and 64 characters in length. The `custom-` prefix is required to avoid name conflicts with Google managed configurations.
         * 
         * @return builder
         * 
         */
        public Builder instanceConfigId(Output instanceConfigId) {
            $.instanceConfigId = instanceConfigId;
            return this;
        }

        /**
         * @param instanceConfigId The ID of the instance config to create. Valid identifiers are of the form `custom-[-a-z0-9]*[a-z0-9]` and must be between 2 and 64 characters in length. The `custom-` prefix is required to avoid name conflicts with Google managed configurations.
         * 
         * @return builder
         * 
         */
        public Builder instanceConfigId(String instanceConfigId) {
            return instanceConfigId(Output.of(instanceConfigId));
        }

        /**
         * @param labels Cloud Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. Cloud Labels can be used to filter collections of resources. They can be used to control how resource metrics are aggregated. And they can be used as arguments to policy management rules (e.g. route, firewall, load balancing, etc.). * Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `a-z{0,62}`. * Label values must be between 0 and 63 characters long and must conform to the regular expression `[a-z0-9_-]{0,63}`. * No more than 64 labels can be associated with a given resource. See https://goo.gl/xmQnxf for more information on and examples of labels. If you plan to use labels in your own code, please note that additional characters may be allowed in the future. Therefore, you are advised to use an internal label representation, such as JSON, which doesn't rely upon specific characters being disallowed. For example, representing labels as the string: name + "_" + value would prove problematic if we were to allow "_" in a future release.
         * 
         * @return builder
         * 
         */
        public Builder labels(@Nullable Output> labels) {
            $.labels = labels;
            return this;
        }

        /**
         * @param labels Cloud Labels are a flexible and lightweight mechanism for organizing cloud resources into groups that reflect a customer's organizational needs and deployment strategies. Cloud Labels can be used to filter collections of resources. They can be used to control how resource metrics are aggregated. And they can be used as arguments to policy management rules (e.g. route, firewall, load balancing, etc.). * Label keys must be between 1 and 63 characters long and must conform to the following regular expression: `a-z{0,62}`. * Label values must be between 0 and 63 characters long and must conform to the regular expression `[a-z0-9_-]{0,63}`. * No more than 64 labels can be associated with a given resource. See https://goo.gl/xmQnxf for more information on and examples of labels. If you plan to use labels in your own code, please note that additional characters may be allowed in the future. Therefore, you are advised to use an internal label representation, such as JSON, which doesn't rely upon specific characters being disallowed. For example, representing labels as the string: name + "_" + value would prove problematic if we were to allow "_" in a future release.
         * 
         * @return builder
         * 
         */
        public Builder labels(Map labels) {
            return labels(Output.of(labels));
        }

        /**
         * @param leaderOptions Allowed values of the "default_leader" schema option for databases in instances that use this instance configuration.
         * 
         * @return builder
         * 
         */
        public Builder leaderOptions(@Nullable Output> leaderOptions) {
            $.leaderOptions = leaderOptions;
            return this;
        }

        /**
         * @param leaderOptions Allowed values of the "default_leader" schema option for databases in instances that use this instance configuration.
         * 
         * @return builder
         * 
         */
        public Builder leaderOptions(List leaderOptions) {
            return leaderOptions(Output.of(leaderOptions));
        }

        /**
         * @param leaderOptions Allowed values of the "default_leader" schema option for databases in instances that use this instance configuration.
         * 
         * @return builder
         * 
         */
        public Builder leaderOptions(String... leaderOptions) {
            return leaderOptions(List.of(leaderOptions));
        }

        /**
         * @param name A unique identifier for the instance configuration. Values are of the form `projects//instanceConfigs/a-z*`.
         * 
         * @return builder
         * 
         */
        public Builder name(@Nullable Output name) {
            $.name = name;
            return this;
        }

        /**
         * @param name A unique identifier for the instance configuration. Values are of the form `projects//instanceConfigs/a-z*`.
         * 
         * @return builder
         * 
         */
        public Builder name(String name) {
            return name(Output.of(name));
        }

        public Builder project(@Nullable Output project) {
            $.project = project;
            return this;
        }

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

        /**
         * @param replicas The geographic placement of nodes in this instance configuration and their replication properties.
         * 
         * @return builder
         * 
         */
        public Builder replicas(@Nullable Output> replicas) {
            $.replicas = replicas;
            return this;
        }

        /**
         * @param replicas The geographic placement of nodes in this instance configuration and their replication properties.
         * 
         * @return builder
         * 
         */
        public Builder replicas(List replicas) {
            return replicas(Output.of(replicas));
        }

        /**
         * @param replicas The geographic placement of nodes in this instance configuration and their replication properties.
         * 
         * @return builder
         * 
         */
        public Builder replicas(ReplicaInfoArgs... replicas) {
            return replicas(List.of(replicas));
        }

        /**
         * @param validateOnly An option to validate, but not actually execute, a request, and provide the same response.
         * 
         * @return builder
         * 
         */
        public Builder validateOnly(@Nullable Output validateOnly) {
            $.validateOnly = validateOnly;
            return this;
        }

        /**
         * @param validateOnly An option to validate, but not actually execute, a request, and provide the same response.
         * 
         * @return builder
         * 
         */
        public Builder validateOnly(Boolean validateOnly) {
            return validateOnly(Output.of(validateOnly));
        }

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

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy