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

@CustomType
public final class HadoopClusterSecurityProfile {
    /**
     * @return The resource ID of the Azure Active Directory Domain Service. Changing this forces a new resource to be created.
     * 
     */
    private String aaddsResourceId;
    /**
     * @return A list of the distinguished names for the cluster user groups. Changing this forces a new resource to be created.
     * 
     */
    private @Nullable List<String> clusterUsersGroupDns;
    /**
     * @return The name of the Azure Active Directory Domain. Changing this forces a new resource to be created.
     * 
     */
    private String domainName;
    /**
     * @return The user password of the Azure Active Directory Domain. Changing this forces a new resource to be created.
     * 
     */
    private String domainUserPassword;
    /**
     * @return The username of the Azure Active Directory Domain. Changing this forces a new resource to be created.
     * 
     */
    private String domainUsername;
    /**
     * @return A list of the LDAPS URLs to communicate with the Azure Active Directory. Changing this forces a new resource to be created.
     * 
     */
    private List<String> ldapsUrls;
    /**
     * @return The User Assigned Identity for the HDInsight Cluster. Changing this forces a new resource to be created.
     * 
     */
    private String msiResourceId;

    private HadoopClusterSecurityProfile() {}
    /**
     * @return The resource ID of the Azure Active Directory Domain Service. Changing this forces a new resource to be created.
     * 
     */
    public String aaddsResourceId() {
        return this.aaddsResourceId;
    }
    /**
     * @return A list of the distinguished names for the cluster user groups. Changing this forces a new resource to be created.
     * 
     */
    public List<String> clusterUsersGroupDns() {
        return this.clusterUsersGroupDns == null ? List.of() : this.clusterUsersGroupDns;
    }
    /**
     * @return The name of the Azure Active Directory Domain. Changing this forces a new resource to be created.
     * 
     */
    public String domainName() {
        return this.domainName;
    }
    /**
     * @return The user password of the Azure Active Directory Domain. Changing this forces a new resource to be created.
     * 
     */
    public String domainUserPassword() {
        return this.domainUserPassword;
    }
    /**
     * @return The username of the Azure Active Directory Domain. Changing this forces a new resource to be created.
     * 
     */
    public String domainUsername() {
        return this.domainUsername;
    }
    /**
     * @return A list of the LDAPS URLs to communicate with the Azure Active Directory. Changing this forces a new resource to be created.
     * 
     */
    public List<String> ldapsUrls() {
        return this.ldapsUrls;
    }
    /**
     * @return The User Assigned Identity for the HDInsight Cluster. Changing this forces a new resource to be created.
     * 
     */
    public String msiResourceId() {
        return this.msiResourceId;
    }

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

    public static Builder builder(HadoopClusterSecurityProfile defaults) {
        return new Builder(defaults);
    }
    @CustomType.Builder
    public static final class Builder {
        private String aaddsResourceId;
        private @Nullable List<String> clusterUsersGroupDns;
        private String domainName;
        private String domainUserPassword;
        private String domainUsername;
        private List<String> ldapsUrls;
        private String msiResourceId;
        public Builder() {}
        public Builder(HadoopClusterSecurityProfile defaults) {
    	      Objects.requireNonNull(defaults);
    	      this.aaddsResourceId = defaults.aaddsResourceId;
    	      this.clusterUsersGroupDns = defaults.clusterUsersGroupDns;
    	      this.domainName = defaults.domainName;
    	      this.domainUserPassword = defaults.domainUserPassword;
    	      this.domainUsername = defaults.domainUsername;
    	      this.ldapsUrls = defaults.ldapsUrls;
    	      this.msiResourceId = defaults.msiResourceId;
        }

        @CustomType.Setter
        public Builder aaddsResourceId(String aaddsResourceId) {
            this.aaddsResourceId = Objects.requireNonNull(aaddsResourceId);
            return this;
        }
        @CustomType.Setter
        public Builder clusterUsersGroupDns(@Nullable List<String> clusterUsersGroupDns) {
            this.clusterUsersGroupDns = clusterUsersGroupDns;
            return this;
        }
        public Builder clusterUsersGroupDns(String... clusterUsersGroupDns) {
            return clusterUsersGroupDns(List.of(clusterUsersGroupDns));
        }
        @CustomType.Setter
        public Builder domainName(String domainName) {
            this.domainName = Objects.requireNonNull(domainName);
            return this;
        }
        @CustomType.Setter
        public Builder domainUserPassword(String domainUserPassword) {
            this.domainUserPassword = Objects.requireNonNull(domainUserPassword);
            return this;
        }
        @CustomType.Setter
        public Builder domainUsername(String domainUsername) {
            this.domainUsername = Objects.requireNonNull(domainUsername);
            return this;
        }
        @CustomType.Setter
        public Builder ldapsUrls(List<String> ldapsUrls) {
            this.ldapsUrls = Objects.requireNonNull(ldapsUrls);
            return this;
        }
        public Builder ldapsUrls(String... ldapsUrls) {
            return ldapsUrls(List.of(ldapsUrls));
        }
        @CustomType.Setter
        public Builder msiResourceId(String msiResourceId) {
            this.msiResourceId = Objects.requireNonNull(msiResourceId);
            return this;
        }
        public HadoopClusterSecurityProfile build() {
            final var o = new HadoopClusterSecurityProfile();
            o.aaddsResourceId = aaddsResourceId;
            o.clusterUsersGroupDns = clusterUsersGroupDns;
            o.domainName = domainName;
            o.domainUserPassword = domainUserPassword;
            o.domainUsername = domainUsername;
            o.ldapsUrls = ldapsUrls;
            o.msiResourceId = msiResourceId;
            return o;
        }
    }
}
