// *** 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 java.lang.String;
import java.util.Map;
import java.util.Objects;
import javax.annotation.Nullable;

@CustomType
public final class ClusterVirtualClusterConfigKubernetesClusterConfigKubernetesSoftwareConfig {
    /**
     * @return The components that should be installed in this Dataproc cluster. The key must be a string from the\
     * KubernetesComponent enumeration. The value is the version of the software to be installed. At least one entry must be specified.
     * * **NOTE** : `component_version[SPARK]` is mandatory to set, or the creation of the cluster will fail.
     * 
     */
    private Map<String,String> componentVersion;
    /**
     * @return The properties to set on daemon config files. Property keys are specified in prefix:property format,
     * for example spark:spark.kubernetes.container.image.
     * 
     */
    private @Nullable Map<String,String> properties;

    private ClusterVirtualClusterConfigKubernetesClusterConfigKubernetesSoftwareConfig() {}
    /**
     * @return The components that should be installed in this Dataproc cluster. The key must be a string from the\
     * KubernetesComponent enumeration. The value is the version of the software to be installed. At least one entry must be specified.
     * * **NOTE** : `component_version[SPARK]` is mandatory to set, or the creation of the cluster will fail.
     * 
     */
    public Map<String,String> componentVersion() {
        return this.componentVersion;
    }
    /**
     * @return The properties to set on daemon config files. Property keys are specified in prefix:property format,
     * for example spark:spark.kubernetes.container.image.
     * 
     */
    public Map<String,String> properties() {
        return this.properties == null ? Map.of() : this.properties;
    }

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

    public static Builder builder(ClusterVirtualClusterConfigKubernetesClusterConfigKubernetesSoftwareConfig defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private Map<String,String> componentVersion;
        private @Nullable Map<String,String> properties;
        public Builder() {}
        public Builder(ClusterVirtualClusterConfigKubernetesClusterConfigKubernetesSoftwareConfig defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.componentVersion = defaults.componentVersion;
    	      this.properties = defaults.properties;
        }

        @CustomType.Setter
        public Builder componentVersion(Map<String,String> componentVersion) {
            this.componentVersion = Objects.requireNonNull(componentVersion);
            return this;
        }
        @CustomType.Setter
        public Builder properties(@Nullable Map<String,String> properties) {
            this.properties = properties;
            return this;
        }
        public ClusterVirtualClusterConfigKubernetesClusterConfigKubernetesSoftwareConfig build() {
            final var o = new ClusterVirtualClusterConfigKubernetesClusterConfigKubernetesSoftwareConfig();
            o.componentVersion = componentVersion;
            o.properties = properties;
            return o;
        }
    }
}
