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

import com.pulumi.azure.hdinsight.outputs.HadoopClusterRolesEdgeNodeHttpsEndpoint;
import com.pulumi.azure.hdinsight.outputs.HadoopClusterRolesEdgeNodeInstallScriptAction;
import com.pulumi.azure.hdinsight.outputs.HadoopClusterRolesEdgeNodeUninstallScriptAction;
import com.pulumi.core.annotations.CustomType;
import java.lang.Integer;
import java.lang.String;
import java.util.List;
import java.util.Objects;
import javax.annotation.Nullable;

@CustomType
public final class HadoopClusterRolesEdgeNode {
    /**
     * @return The HTTPS Connectivity Endpoint for this HDInsight Hadoop Cluster.
     * 
     */
    private @Nullable List<HadoopClusterRolesEdgeNodeHttpsEndpoint> httpsEndpoints;
    /**
     * @return A `install_script_action` block as defined below.
     * 
     */
    private List<HadoopClusterRolesEdgeNodeInstallScriptAction> installScriptActions;
    /**
     * @return The number of instances which should be run for the Worker Nodes.
     * 
     */
    private Integer targetInstanceCount;
    /**
     * @return A `uninstall_script_actions` block as defined below. Changing this forces a new resource to be created.
     * 
     */
    private @Nullable List<HadoopClusterRolesEdgeNodeUninstallScriptAction> uninstallScriptActions;
    /**
     * @return The Size of the Virtual Machine which should be used as the Edge Nodes. Possible values are `ExtraSmall`, `Small`, `Medium`, `Large`, `ExtraLarge`, `A5`, `A6`, `A7`, `A8`, `A9`, `A10`, `A11`, `Standard_A1_V2`, `Standard_A2_V2`, `Standard_A2m_V2`, `Standard_A3`, `Standard_A4_V2`, `Standard_A4m_V2`, `Standard_A8_V2`, `Standard_A8m_V2`, `Standard_D1`, `Standard_D2`, `Standard_D3`, `Standard_D4`, `Standard_D11`, `Standard_D12`, `Standard_D13`, `Standard_D14`, `Standard_D1_V2`, `Standard_D2_V2`, `Standard_D3_V2`, `Standard_D4_V2`, `Standard_D5_V2`, `Standard_D11_V2`, `Standard_D12_V2`, `Standard_D13_V2`, `Standard_D14_V2`, `Standard_DS1_V2`, `Standard_DS2_V2`, `Standard_DS3_V2`, `Standard_DS4_V2`, `Standard_DS5_V2`, `Standard_DS11_V2`, `Standard_DS12_V2`, `Standard_DS13_V2`, `Standard_DS14_V2`, `Standard_E2_V3`, `Standard_E4_V3`, `Standard_E8_V3`, `Standard_E16_V3`, `Standard_E20_V3`, `Standard_E32_V3`, `Standard_E64_V3`, `Standard_E64i_V3`, `Standard_E2s_V3`, `Standard_E4s_V3`, `Standard_E8s_V3`, `Standard_E16s_V3`, `Standard_E20s_V3`, `Standard_E32s_V3`, `Standard_E64s_V3`, `Standard_E64is_V3`, `Standard_D2a_V4`, `Standard_D4a_V4`, `Standard_D8a_V4`, `Standard_D16a_V4`, `Standard_D32a_V4`, `Standard_D48a_V4`, `Standard_D64a_V4`, `Standard_D96a_V4`, `Standard_E2a_V4`, `Standard_E4a_V4`, `Standard_E8a_V4`, `Standard_E16a_V4`, `Standard_E20a_V4`, `Standard_E32a_V4`, `Standard_E48a_V4`, `Standard_E64a_V4`, `Standard_E96a_V4`, `Standard_G1`, `Standard_G2`, `Standard_G3`, `Standard_G4`, `Standard_G5`, `Standard_F2s_V2`, `Standard_F4s_V2`, `Standard_F8s_V2`, `Standard_F16s_V2`, `Standard_F32s_V2`, `Standard_F64s_V2`, `Standard_F72s_V2`, `Standard_GS1`, `Standard_GS2`, `Standard_GS3`, `Standard_GS4`, `Standard_GS5` and `Standard_NC24`.
     * 
     */
    private String vmSize;

    private HadoopClusterRolesEdgeNode() {}
    /**
     * @return The HTTPS Connectivity Endpoint for this HDInsight Hadoop Cluster.
     * 
     */
    public List<HadoopClusterRolesEdgeNodeHttpsEndpoint> httpsEndpoints() {
        return this.httpsEndpoints == null ? List.of() : this.httpsEndpoints;
    }
    /**
     * @return A `install_script_action` block as defined below.
     * 
     */
    public List<HadoopClusterRolesEdgeNodeInstallScriptAction> installScriptActions() {
        return this.installScriptActions;
    }
    /**
     * @return The number of instances which should be run for the Worker Nodes.
     * 
     */
    public Integer targetInstanceCount() {
        return this.targetInstanceCount;
    }
    /**
     * @return A `uninstall_script_actions` block as defined below. Changing this forces a new resource to be created.
     * 
     */
    public List<HadoopClusterRolesEdgeNodeUninstallScriptAction> uninstallScriptActions() {
        return this.uninstallScriptActions == null ? List.of() : this.uninstallScriptActions;
    }
    /**
     * @return The Size of the Virtual Machine which should be used as the Edge Nodes. Possible values are `ExtraSmall`, `Small`, `Medium`, `Large`, `ExtraLarge`, `A5`, `A6`, `A7`, `A8`, `A9`, `A10`, `A11`, `Standard_A1_V2`, `Standard_A2_V2`, `Standard_A2m_V2`, `Standard_A3`, `Standard_A4_V2`, `Standard_A4m_V2`, `Standard_A8_V2`, `Standard_A8m_V2`, `Standard_D1`, `Standard_D2`, `Standard_D3`, `Standard_D4`, `Standard_D11`, `Standard_D12`, `Standard_D13`, `Standard_D14`, `Standard_D1_V2`, `Standard_D2_V2`, `Standard_D3_V2`, `Standard_D4_V2`, `Standard_D5_V2`, `Standard_D11_V2`, `Standard_D12_V2`, `Standard_D13_V2`, `Standard_D14_V2`, `Standard_DS1_V2`, `Standard_DS2_V2`, `Standard_DS3_V2`, `Standard_DS4_V2`, `Standard_DS5_V2`, `Standard_DS11_V2`, `Standard_DS12_V2`, `Standard_DS13_V2`, `Standard_DS14_V2`, `Standard_E2_V3`, `Standard_E4_V3`, `Standard_E8_V3`, `Standard_E16_V3`, `Standard_E20_V3`, `Standard_E32_V3`, `Standard_E64_V3`, `Standard_E64i_V3`, `Standard_E2s_V3`, `Standard_E4s_V3`, `Standard_E8s_V3`, `Standard_E16s_V3`, `Standard_E20s_V3`, `Standard_E32s_V3`, `Standard_E64s_V3`, `Standard_E64is_V3`, `Standard_D2a_V4`, `Standard_D4a_V4`, `Standard_D8a_V4`, `Standard_D16a_V4`, `Standard_D32a_V4`, `Standard_D48a_V4`, `Standard_D64a_V4`, `Standard_D96a_V4`, `Standard_E2a_V4`, `Standard_E4a_V4`, `Standard_E8a_V4`, `Standard_E16a_V4`, `Standard_E20a_V4`, `Standard_E32a_V4`, `Standard_E48a_V4`, `Standard_E64a_V4`, `Standard_E96a_V4`, `Standard_G1`, `Standard_G2`, `Standard_G3`, `Standard_G4`, `Standard_G5`, `Standard_F2s_V2`, `Standard_F4s_V2`, `Standard_F8s_V2`, `Standard_F16s_V2`, `Standard_F32s_V2`, `Standard_F64s_V2`, `Standard_F72s_V2`, `Standard_GS1`, `Standard_GS2`, `Standard_GS3`, `Standard_GS4`, `Standard_GS5` and `Standard_NC24`.
     * 
     */
    public String vmSize() {
        return this.vmSize;
    }

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

    public static Builder builder(HadoopClusterRolesEdgeNode defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private @Nullable List<HadoopClusterRolesEdgeNodeHttpsEndpoint> httpsEndpoints;
        private List<HadoopClusterRolesEdgeNodeInstallScriptAction> installScriptActions;
        private Integer targetInstanceCount;
        private @Nullable List<HadoopClusterRolesEdgeNodeUninstallScriptAction> uninstallScriptActions;
        private String vmSize;
        public Builder() {}
        public Builder(HadoopClusterRolesEdgeNode defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.httpsEndpoints = defaults.httpsEndpoints;
    	      this.installScriptActions = defaults.installScriptActions;
    	      this.targetInstanceCount = defaults.targetInstanceCount;
    	      this.uninstallScriptActions = defaults.uninstallScriptActions;
    	      this.vmSize = defaults.vmSize;
        }

        @CustomType.Setter
        public Builder httpsEndpoints(@Nullable List<HadoopClusterRolesEdgeNodeHttpsEndpoint> httpsEndpoints) {
            this.httpsEndpoints = httpsEndpoints;
            return this;
        }
        public Builder httpsEndpoints(HadoopClusterRolesEdgeNodeHttpsEndpoint... httpsEndpoints) {
            return httpsEndpoints(List.of(httpsEndpoints));
        }
        @CustomType.Setter
        public Builder installScriptActions(List<HadoopClusterRolesEdgeNodeInstallScriptAction> installScriptActions) {
            this.installScriptActions = Objects.requireNonNull(installScriptActions);
            return this;
        }
        public Builder installScriptActions(HadoopClusterRolesEdgeNodeInstallScriptAction... installScriptActions) {
            return installScriptActions(List.of(installScriptActions));
        }
        @CustomType.Setter
        public Builder targetInstanceCount(Integer targetInstanceCount) {
            this.targetInstanceCount = Objects.requireNonNull(targetInstanceCount);
            return this;
        }
        @CustomType.Setter
        public Builder uninstallScriptActions(@Nullable List<HadoopClusterRolesEdgeNodeUninstallScriptAction> uninstallScriptActions) {
            this.uninstallScriptActions = uninstallScriptActions;
            return this;
        }
        public Builder uninstallScriptActions(HadoopClusterRolesEdgeNodeUninstallScriptAction... uninstallScriptActions) {
            return uninstallScriptActions(List.of(uninstallScriptActions));
        }
        @CustomType.Setter
        public Builder vmSize(String vmSize) {
            this.vmSize = Objects.requireNonNull(vmSize);
            return this;
        }
        public HadoopClusterRolesEdgeNode build() {
            final var o = new HadoopClusterRolesEdgeNode();
            o.httpsEndpoints = httpsEndpoints;
            o.installScriptActions = installScriptActions;
            o.targetInstanceCount = targetInstanceCount;
            o.uninstallScriptActions = uninstallScriptActions;
            o.vmSize = vmSize;
            return o;
        }
    }
}
