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

import com.pulumi.core.annotations.CustomType;
import com.pulumi.gcp.dataproc.outputs.WorkflowTemplatePlacementManagedClusterConfig;
import java.lang.String;
import java.util.Map;
import java.util.Objects;
import javax.annotation.Nullable;

@CustomType
public final class WorkflowTemplatePlacementManagedCluster {
    /**
     * @return Required. The cluster name prefix. A unique cluster name will be formed by appending a random suffix. The name must contain only lower-case letters (a-z), numbers (0-9), and hyphens (-). Must begin with a letter. Cannot begin or end with hyphen. Must consist of between 2 and 35 characters.
     * 
     */
    private String clusterName;
    /**
     * @return Required. The cluster configuration.
     * 
     */
    private WorkflowTemplatePlacementManagedClusterConfig config;
    /**
     * @return The labels to associate with this cluster. Label keys must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: {0,63} No more than 32 labels can be associated with a given cluster.
     * 
     */
    private @Nullable Map<String,String> labels;

    private WorkflowTemplatePlacementManagedCluster() {}
    /**
     * @return Required. The cluster name prefix. A unique cluster name will be formed by appending a random suffix. The name must contain only lower-case letters (a-z), numbers (0-9), and hyphens (-). Must begin with a letter. Cannot begin or end with hyphen. Must consist of between 2 and 35 characters.
     * 
     */
    public String clusterName() {
        return this.clusterName;
    }
    /**
     * @return Required. The cluster configuration.
     * 
     */
    public WorkflowTemplatePlacementManagedClusterConfig config() {
        return this.config;
    }
    /**
     * @return The labels to associate with this cluster. Label keys must be between 1 and 63 characters long, and must conform to the following PCRE regular expression: {0,63} No more than 32 labels can be associated with a given cluster.
     * 
     */
    public Map<String,String> labels() {
        return this.labels == null ? Map.of() : this.labels;
    }

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

    public static Builder builder(WorkflowTemplatePlacementManagedCluster defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String clusterName;
        private WorkflowTemplatePlacementManagedClusterConfig config;
        private @Nullable Map<String,String> labels;
        public Builder() {}
        public Builder(WorkflowTemplatePlacementManagedCluster defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.clusterName = defaults.clusterName;
    	      this.config = defaults.config;
    	      this.labels = defaults.labels;
        }

        @CustomType.Setter
        public Builder clusterName(String clusterName) {
            this.clusterName = Objects.requireNonNull(clusterName);
            return this;
        }
        @CustomType.Setter
        public Builder config(WorkflowTemplatePlacementManagedClusterConfig config) {
            this.config = Objects.requireNonNull(config);
            return this;
        }
        @CustomType.Setter
        public Builder labels(@Nullable Map<String,String> labels) {
            this.labels = labels;
            return this;
        }
        public WorkflowTemplatePlacementManagedCluster build() {
            final var o = new WorkflowTemplatePlacementManagedCluster();
            o.clusterName = clusterName;
            o.config = config;
            o.labels = labels;
            return o;
        }
    }
}
