# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from . import _utilities

__all__ = ['ActiveDirectoryArgs', 'ActiveDirectory']

@pulumi.input_type
class ActiveDirectoryArgs:
    def __init__(__self__, *,
                 servers: pulumi.Input[Sequence[pulumi.Input[str]]],
                 service_account_password: pulumi.Input[str],
                 service_account_username: pulumi.Input[str],
                 test_password: pulumi.Input[str],
                 test_username: pulumi.Input[str],
                 user_search_base: pulumi.Input[str],
                 access_mode: Optional[pulumi.Input[str]] = None,
                 allowed_principal_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 annotations: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 certificate: Optional[pulumi.Input[str]] = None,
                 connection_timeout: Optional[pulumi.Input[int]] = None,
                 default_login_domain: Optional[pulumi.Input[str]] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 group_dn_attribute: Optional[pulumi.Input[str]] = None,
                 group_member_mapping_attribute: Optional[pulumi.Input[str]] = None,
                 group_member_user_attribute: Optional[pulumi.Input[str]] = None,
                 group_name_attribute: Optional[pulumi.Input[str]] = None,
                 group_object_class: Optional[pulumi.Input[str]] = None,
                 group_search_attribute: Optional[pulumi.Input[str]] = None,
                 group_search_base: Optional[pulumi.Input[str]] = None,
                 group_search_filter: Optional[pulumi.Input[str]] = None,
                 labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 nested_group_membership_enabled: Optional[pulumi.Input[bool]] = None,
                 port: Optional[pulumi.Input[int]] = None,
                 start_tls: Optional[pulumi.Input[bool]] = None,
                 tls: Optional[pulumi.Input[bool]] = None,
                 user_disabled_bit_mask: Optional[pulumi.Input[int]] = None,
                 user_enabled_attribute: Optional[pulumi.Input[str]] = None,
                 user_login_attribute: Optional[pulumi.Input[str]] = None,
                 user_name_attribute: Optional[pulumi.Input[str]] = None,
                 user_object_class: Optional[pulumi.Input[str]] = None,
                 user_search_attribute: Optional[pulumi.Input[str]] = None,
                 user_search_filter: Optional[pulumi.Input[str]] = None):
        """
        The set of arguments for constructing a ActiveDirectory resource.
        :param pulumi.Input[Mapping[str, Any]] annotations: Annotations of the resource
        :param pulumi.Input[Mapping[str, Any]] labels: Labels of the resource
        """
        pulumi.set(__self__, "servers", servers)
        pulumi.set(__self__, "service_account_password", service_account_password)
        pulumi.set(__self__, "service_account_username", service_account_username)
        pulumi.set(__self__, "test_password", test_password)
        pulumi.set(__self__, "test_username", test_username)
        pulumi.set(__self__, "user_search_base", user_search_base)
        if access_mode is not None:
            pulumi.set(__self__, "access_mode", access_mode)
        if allowed_principal_ids is not None:
            pulumi.set(__self__, "allowed_principal_ids", allowed_principal_ids)
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if certificate is not None:
            pulumi.set(__self__, "certificate", certificate)
        if connection_timeout is not None:
            pulumi.set(__self__, "connection_timeout", connection_timeout)
        if default_login_domain is not None:
            pulumi.set(__self__, "default_login_domain", default_login_domain)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if group_dn_attribute is not None:
            pulumi.set(__self__, "group_dn_attribute", group_dn_attribute)
        if group_member_mapping_attribute is not None:
            pulumi.set(__self__, "group_member_mapping_attribute", group_member_mapping_attribute)
        if group_member_user_attribute is not None:
            pulumi.set(__self__, "group_member_user_attribute", group_member_user_attribute)
        if group_name_attribute is not None:
            pulumi.set(__self__, "group_name_attribute", group_name_attribute)
        if group_object_class is not None:
            pulumi.set(__self__, "group_object_class", group_object_class)
        if group_search_attribute is not None:
            pulumi.set(__self__, "group_search_attribute", group_search_attribute)
        if group_search_base is not None:
            pulumi.set(__self__, "group_search_base", group_search_base)
        if group_search_filter is not None:
            pulumi.set(__self__, "group_search_filter", group_search_filter)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if nested_group_membership_enabled is not None:
            pulumi.set(__self__, "nested_group_membership_enabled", nested_group_membership_enabled)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if start_tls is not None:
            pulumi.set(__self__, "start_tls", start_tls)
        if tls is not None:
            pulumi.set(__self__, "tls", tls)
        if user_disabled_bit_mask is not None:
            pulumi.set(__self__, "user_disabled_bit_mask", user_disabled_bit_mask)
        if user_enabled_attribute is not None:
            pulumi.set(__self__, "user_enabled_attribute", user_enabled_attribute)
        if user_login_attribute is not None:
            pulumi.set(__self__, "user_login_attribute", user_login_attribute)
        if user_name_attribute is not None:
            pulumi.set(__self__, "user_name_attribute", user_name_attribute)
        if user_object_class is not None:
            pulumi.set(__self__, "user_object_class", user_object_class)
        if user_search_attribute is not None:
            pulumi.set(__self__, "user_search_attribute", user_search_attribute)
        if user_search_filter is not None:
            pulumi.set(__self__, "user_search_filter", user_search_filter)

    @property
    @pulumi.getter
    def servers(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
        return pulumi.get(self, "servers")

    @servers.setter
    def servers(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]):
        pulumi.set(self, "servers", value)

    @property
    @pulumi.getter(name="serviceAccountPassword")
    def service_account_password(self) -> pulumi.Input[str]:
        return pulumi.get(self, "service_account_password")

    @service_account_password.setter
    def service_account_password(self, value: pulumi.Input[str]):
        pulumi.set(self, "service_account_password", value)

    @property
    @pulumi.getter(name="serviceAccountUsername")
    def service_account_username(self) -> pulumi.Input[str]:
        return pulumi.get(self, "service_account_username")

    @service_account_username.setter
    def service_account_username(self, value: pulumi.Input[str]):
        pulumi.set(self, "service_account_username", value)

    @property
    @pulumi.getter(name="testPassword")
    def test_password(self) -> pulumi.Input[str]:
        return pulumi.get(self, "test_password")

    @test_password.setter
    def test_password(self, value: pulumi.Input[str]):
        pulumi.set(self, "test_password", value)

    @property
    @pulumi.getter(name="testUsername")
    def test_username(self) -> pulumi.Input[str]:
        return pulumi.get(self, "test_username")

    @test_username.setter
    def test_username(self, value: pulumi.Input[str]):
        pulumi.set(self, "test_username", value)

    @property
    @pulumi.getter(name="userSearchBase")
    def user_search_base(self) -> pulumi.Input[str]:
        return pulumi.get(self, "user_search_base")

    @user_search_base.setter
    def user_search_base(self, value: pulumi.Input[str]):
        pulumi.set(self, "user_search_base", value)

    @property
    @pulumi.getter(name="accessMode")
    def access_mode(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "access_mode")

    @access_mode.setter
    def access_mode(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "access_mode", value)

    @property
    @pulumi.getter(name="allowedPrincipalIds")
    def allowed_principal_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "allowed_principal_ids")

    @allowed_principal_ids.setter
    def allowed_principal_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "allowed_principal_ids", value)

    @property
    @pulumi.getter
    def annotations(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        """
        Annotations of the resource
        """
        return pulumi.get(self, "annotations")

    @annotations.setter
    def annotations(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "annotations", value)

    @property
    @pulumi.getter
    def certificate(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "certificate")

    @certificate.setter
    def certificate(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "certificate", value)

    @property
    @pulumi.getter(name="connectionTimeout")
    def connection_timeout(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "connection_timeout")

    @connection_timeout.setter
    def connection_timeout(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "connection_timeout", value)

    @property
    @pulumi.getter(name="defaultLoginDomain")
    def default_login_domain(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "default_login_domain")

    @default_login_domain.setter
    def default_login_domain(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "default_login_domain", value)

    @property
    @pulumi.getter
    def enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enabled")

    @enabled.setter
    def enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enabled", value)

    @property
    @pulumi.getter(name="groupDnAttribute")
    def group_dn_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_dn_attribute")

    @group_dn_attribute.setter
    def group_dn_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_dn_attribute", value)

    @property
    @pulumi.getter(name="groupMemberMappingAttribute")
    def group_member_mapping_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_member_mapping_attribute")

    @group_member_mapping_attribute.setter
    def group_member_mapping_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_member_mapping_attribute", value)

    @property
    @pulumi.getter(name="groupMemberUserAttribute")
    def group_member_user_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_member_user_attribute")

    @group_member_user_attribute.setter
    def group_member_user_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_member_user_attribute", value)

    @property
    @pulumi.getter(name="groupNameAttribute")
    def group_name_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_name_attribute")

    @group_name_attribute.setter
    def group_name_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_name_attribute", value)

    @property
    @pulumi.getter(name="groupObjectClass")
    def group_object_class(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_object_class")

    @group_object_class.setter
    def group_object_class(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_object_class", value)

    @property
    @pulumi.getter(name="groupSearchAttribute")
    def group_search_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_search_attribute")

    @group_search_attribute.setter
    def group_search_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_search_attribute", value)

    @property
    @pulumi.getter(name="groupSearchBase")
    def group_search_base(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_search_base")

    @group_search_base.setter
    def group_search_base(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_search_base", value)

    @property
    @pulumi.getter(name="groupSearchFilter")
    def group_search_filter(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_search_filter")

    @group_search_filter.setter
    def group_search_filter(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_search_filter", value)

    @property
    @pulumi.getter
    def labels(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        """
        Labels of the resource
        """
        return pulumi.get(self, "labels")

    @labels.setter
    def labels(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "labels", value)

    @property
    @pulumi.getter(name="nestedGroupMembershipEnabled")
    def nested_group_membership_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "nested_group_membership_enabled")

    @nested_group_membership_enabled.setter
    def nested_group_membership_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "nested_group_membership_enabled", value)

    @property
    @pulumi.getter
    def port(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "port")

    @port.setter
    def port(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "port", value)

    @property
    @pulumi.getter(name="startTls")
    def start_tls(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "start_tls")

    @start_tls.setter
    def start_tls(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "start_tls", value)

    @property
    @pulumi.getter
    def tls(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "tls")

    @tls.setter
    def tls(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "tls", value)

    @property
    @pulumi.getter(name="userDisabledBitMask")
    def user_disabled_bit_mask(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "user_disabled_bit_mask")

    @user_disabled_bit_mask.setter
    def user_disabled_bit_mask(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "user_disabled_bit_mask", value)

    @property
    @pulumi.getter(name="userEnabledAttribute")
    def user_enabled_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "user_enabled_attribute")

    @user_enabled_attribute.setter
    def user_enabled_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_enabled_attribute", value)

    @property
    @pulumi.getter(name="userLoginAttribute")
    def user_login_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "user_login_attribute")

    @user_login_attribute.setter
    def user_login_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_login_attribute", value)

    @property
    @pulumi.getter(name="userNameAttribute")
    def user_name_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "user_name_attribute")

    @user_name_attribute.setter
    def user_name_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_name_attribute", value)

    @property
    @pulumi.getter(name="userObjectClass")
    def user_object_class(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "user_object_class")

    @user_object_class.setter
    def user_object_class(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_object_class", value)

    @property
    @pulumi.getter(name="userSearchAttribute")
    def user_search_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "user_search_attribute")

    @user_search_attribute.setter
    def user_search_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_search_attribute", value)

    @property
    @pulumi.getter(name="userSearchFilter")
    def user_search_filter(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "user_search_filter")

    @user_search_filter.setter
    def user_search_filter(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_search_filter", value)


@pulumi.input_type
class _ActiveDirectoryState:
    def __init__(__self__, *,
                 access_mode: Optional[pulumi.Input[str]] = None,
                 allowed_principal_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 annotations: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 certificate: Optional[pulumi.Input[str]] = None,
                 connection_timeout: Optional[pulumi.Input[int]] = None,
                 default_login_domain: Optional[pulumi.Input[str]] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 group_dn_attribute: Optional[pulumi.Input[str]] = None,
                 group_member_mapping_attribute: Optional[pulumi.Input[str]] = None,
                 group_member_user_attribute: Optional[pulumi.Input[str]] = None,
                 group_name_attribute: Optional[pulumi.Input[str]] = None,
                 group_object_class: Optional[pulumi.Input[str]] = None,
                 group_search_attribute: Optional[pulumi.Input[str]] = None,
                 group_search_base: Optional[pulumi.Input[str]] = None,
                 group_search_filter: Optional[pulumi.Input[str]] = None,
                 labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 name: Optional[pulumi.Input[str]] = None,
                 nested_group_membership_enabled: Optional[pulumi.Input[bool]] = None,
                 port: Optional[pulumi.Input[int]] = None,
                 servers: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 service_account_password: Optional[pulumi.Input[str]] = None,
                 service_account_username: Optional[pulumi.Input[str]] = None,
                 start_tls: Optional[pulumi.Input[bool]] = None,
                 test_password: Optional[pulumi.Input[str]] = None,
                 test_username: Optional[pulumi.Input[str]] = None,
                 tls: Optional[pulumi.Input[bool]] = None,
                 type: Optional[pulumi.Input[str]] = None,
                 user_disabled_bit_mask: Optional[pulumi.Input[int]] = None,
                 user_enabled_attribute: Optional[pulumi.Input[str]] = None,
                 user_login_attribute: Optional[pulumi.Input[str]] = None,
                 user_name_attribute: Optional[pulumi.Input[str]] = None,
                 user_object_class: Optional[pulumi.Input[str]] = None,
                 user_search_attribute: Optional[pulumi.Input[str]] = None,
                 user_search_base: Optional[pulumi.Input[str]] = None,
                 user_search_filter: Optional[pulumi.Input[str]] = None):
        """
        Input properties used for looking up and filtering ActiveDirectory resources.
        :param pulumi.Input[Mapping[str, Any]] annotations: Annotations of the resource
        :param pulumi.Input[Mapping[str, Any]] labels: Labels of the resource
        """
        if access_mode is not None:
            pulumi.set(__self__, "access_mode", access_mode)
        if allowed_principal_ids is not None:
            pulumi.set(__self__, "allowed_principal_ids", allowed_principal_ids)
        if annotations is not None:
            pulumi.set(__self__, "annotations", annotations)
        if certificate is not None:
            pulumi.set(__self__, "certificate", certificate)
        if connection_timeout is not None:
            pulumi.set(__self__, "connection_timeout", connection_timeout)
        if default_login_domain is not None:
            pulumi.set(__self__, "default_login_domain", default_login_domain)
        if enabled is not None:
            pulumi.set(__self__, "enabled", enabled)
        if group_dn_attribute is not None:
            pulumi.set(__self__, "group_dn_attribute", group_dn_attribute)
        if group_member_mapping_attribute is not None:
            pulumi.set(__self__, "group_member_mapping_attribute", group_member_mapping_attribute)
        if group_member_user_attribute is not None:
            pulumi.set(__self__, "group_member_user_attribute", group_member_user_attribute)
        if group_name_attribute is not None:
            pulumi.set(__self__, "group_name_attribute", group_name_attribute)
        if group_object_class is not None:
            pulumi.set(__self__, "group_object_class", group_object_class)
        if group_search_attribute is not None:
            pulumi.set(__self__, "group_search_attribute", group_search_attribute)
        if group_search_base is not None:
            pulumi.set(__self__, "group_search_base", group_search_base)
        if group_search_filter is not None:
            pulumi.set(__self__, "group_search_filter", group_search_filter)
        if labels is not None:
            pulumi.set(__self__, "labels", labels)
        if name is not None:
            pulumi.set(__self__, "name", name)
        if nested_group_membership_enabled is not None:
            pulumi.set(__self__, "nested_group_membership_enabled", nested_group_membership_enabled)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if servers is not None:
            pulumi.set(__self__, "servers", servers)
        if service_account_password is not None:
            pulumi.set(__self__, "service_account_password", service_account_password)
        if service_account_username is not None:
            pulumi.set(__self__, "service_account_username", service_account_username)
        if start_tls is not None:
            pulumi.set(__self__, "start_tls", start_tls)
        if test_password is not None:
            pulumi.set(__self__, "test_password", test_password)
        if test_username is not None:
            pulumi.set(__self__, "test_username", test_username)
        if tls is not None:
            pulumi.set(__self__, "tls", tls)
        if type is not None:
            pulumi.set(__self__, "type", type)
        if user_disabled_bit_mask is not None:
            pulumi.set(__self__, "user_disabled_bit_mask", user_disabled_bit_mask)
        if user_enabled_attribute is not None:
            pulumi.set(__self__, "user_enabled_attribute", user_enabled_attribute)
        if user_login_attribute is not None:
            pulumi.set(__self__, "user_login_attribute", user_login_attribute)
        if user_name_attribute is not None:
            pulumi.set(__self__, "user_name_attribute", user_name_attribute)
        if user_object_class is not None:
            pulumi.set(__self__, "user_object_class", user_object_class)
        if user_search_attribute is not None:
            pulumi.set(__self__, "user_search_attribute", user_search_attribute)
        if user_search_base is not None:
            pulumi.set(__self__, "user_search_base", user_search_base)
        if user_search_filter is not None:
            pulumi.set(__self__, "user_search_filter", user_search_filter)

    @property
    @pulumi.getter(name="accessMode")
    def access_mode(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "access_mode")

    @access_mode.setter
    def access_mode(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "access_mode", value)

    @property
    @pulumi.getter(name="allowedPrincipalIds")
    def allowed_principal_ids(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "allowed_principal_ids")

    @allowed_principal_ids.setter
    def allowed_principal_ids(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "allowed_principal_ids", value)

    @property
    @pulumi.getter
    def annotations(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        """
        Annotations of the resource
        """
        return pulumi.get(self, "annotations")

    @annotations.setter
    def annotations(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "annotations", value)

    @property
    @pulumi.getter
    def certificate(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "certificate")

    @certificate.setter
    def certificate(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "certificate", value)

    @property
    @pulumi.getter(name="connectionTimeout")
    def connection_timeout(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "connection_timeout")

    @connection_timeout.setter
    def connection_timeout(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "connection_timeout", value)

    @property
    @pulumi.getter(name="defaultLoginDomain")
    def default_login_domain(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "default_login_domain")

    @default_login_domain.setter
    def default_login_domain(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "default_login_domain", value)

    @property
    @pulumi.getter
    def enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "enabled")

    @enabled.setter
    def enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "enabled", value)

    @property
    @pulumi.getter(name="groupDnAttribute")
    def group_dn_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_dn_attribute")

    @group_dn_attribute.setter
    def group_dn_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_dn_attribute", value)

    @property
    @pulumi.getter(name="groupMemberMappingAttribute")
    def group_member_mapping_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_member_mapping_attribute")

    @group_member_mapping_attribute.setter
    def group_member_mapping_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_member_mapping_attribute", value)

    @property
    @pulumi.getter(name="groupMemberUserAttribute")
    def group_member_user_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_member_user_attribute")

    @group_member_user_attribute.setter
    def group_member_user_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_member_user_attribute", value)

    @property
    @pulumi.getter(name="groupNameAttribute")
    def group_name_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_name_attribute")

    @group_name_attribute.setter
    def group_name_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_name_attribute", value)

    @property
    @pulumi.getter(name="groupObjectClass")
    def group_object_class(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_object_class")

    @group_object_class.setter
    def group_object_class(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_object_class", value)

    @property
    @pulumi.getter(name="groupSearchAttribute")
    def group_search_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_search_attribute")

    @group_search_attribute.setter
    def group_search_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_search_attribute", value)

    @property
    @pulumi.getter(name="groupSearchBase")
    def group_search_base(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_search_base")

    @group_search_base.setter
    def group_search_base(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_search_base", value)

    @property
    @pulumi.getter(name="groupSearchFilter")
    def group_search_filter(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "group_search_filter")

    @group_search_filter.setter
    def group_search_filter(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "group_search_filter", value)

    @property
    @pulumi.getter
    def labels(self) -> Optional[pulumi.Input[Mapping[str, Any]]]:
        """
        Labels of the resource
        """
        return pulumi.get(self, "labels")

    @labels.setter
    def labels(self, value: Optional[pulumi.Input[Mapping[str, Any]]]):
        pulumi.set(self, "labels", value)

    @property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "name")

    @name.setter
    def name(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "name", value)

    @property
    @pulumi.getter(name="nestedGroupMembershipEnabled")
    def nested_group_membership_enabled(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "nested_group_membership_enabled")

    @nested_group_membership_enabled.setter
    def nested_group_membership_enabled(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "nested_group_membership_enabled", value)

    @property
    @pulumi.getter
    def port(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "port")

    @port.setter
    def port(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "port", value)

    @property
    @pulumi.getter
    def servers(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
        return pulumi.get(self, "servers")

    @servers.setter
    def servers(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
        pulumi.set(self, "servers", value)

    @property
    @pulumi.getter(name="serviceAccountPassword")
    def service_account_password(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "service_account_password")

    @service_account_password.setter
    def service_account_password(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "service_account_password", value)

    @property
    @pulumi.getter(name="serviceAccountUsername")
    def service_account_username(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "service_account_username")

    @service_account_username.setter
    def service_account_username(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "service_account_username", value)

    @property
    @pulumi.getter(name="startTls")
    def start_tls(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "start_tls")

    @start_tls.setter
    def start_tls(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "start_tls", value)

    @property
    @pulumi.getter(name="testPassword")
    def test_password(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "test_password")

    @test_password.setter
    def test_password(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "test_password", value)

    @property
    @pulumi.getter(name="testUsername")
    def test_username(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "test_username")

    @test_username.setter
    def test_username(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "test_username", value)

    @property
    @pulumi.getter
    def tls(self) -> Optional[pulumi.Input[bool]]:
        return pulumi.get(self, "tls")

    @tls.setter
    def tls(self, value: Optional[pulumi.Input[bool]]):
        pulumi.set(self, "tls", value)

    @property
    @pulumi.getter
    def type(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "type")

    @type.setter
    def type(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "type", value)

    @property
    @pulumi.getter(name="userDisabledBitMask")
    def user_disabled_bit_mask(self) -> Optional[pulumi.Input[int]]:
        return pulumi.get(self, "user_disabled_bit_mask")

    @user_disabled_bit_mask.setter
    def user_disabled_bit_mask(self, value: Optional[pulumi.Input[int]]):
        pulumi.set(self, "user_disabled_bit_mask", value)

    @property
    @pulumi.getter(name="userEnabledAttribute")
    def user_enabled_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "user_enabled_attribute")

    @user_enabled_attribute.setter
    def user_enabled_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_enabled_attribute", value)

    @property
    @pulumi.getter(name="userLoginAttribute")
    def user_login_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "user_login_attribute")

    @user_login_attribute.setter
    def user_login_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_login_attribute", value)

    @property
    @pulumi.getter(name="userNameAttribute")
    def user_name_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "user_name_attribute")

    @user_name_attribute.setter
    def user_name_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_name_attribute", value)

    @property
    @pulumi.getter(name="userObjectClass")
    def user_object_class(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "user_object_class")

    @user_object_class.setter
    def user_object_class(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_object_class", value)

    @property
    @pulumi.getter(name="userSearchAttribute")
    def user_search_attribute(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "user_search_attribute")

    @user_search_attribute.setter
    def user_search_attribute(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_search_attribute", value)

    @property
    @pulumi.getter(name="userSearchBase")
    def user_search_base(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "user_search_base")

    @user_search_base.setter
    def user_search_base(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_search_base", value)

    @property
    @pulumi.getter(name="userSearchFilter")
    def user_search_filter(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "user_search_filter")

    @user_search_filter.setter
    def user_search_filter(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "user_search_filter", value)


warnings.warn("""rancher2.ActiveDirectory has been deprecated in favor of rancher2.AuthConfigActiveDirectory""", DeprecationWarning)


class ActiveDirectory(pulumi.CustomResource):
    warnings.warn("""rancher2.ActiveDirectory has been deprecated in favor of rancher2.AuthConfigActiveDirectory""", DeprecationWarning)

    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 access_mode: Optional[pulumi.Input[str]] = None,
                 allowed_principal_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 annotations: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 certificate: Optional[pulumi.Input[str]] = None,
                 connection_timeout: Optional[pulumi.Input[int]] = None,
                 default_login_domain: Optional[pulumi.Input[str]] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 group_dn_attribute: Optional[pulumi.Input[str]] = None,
                 group_member_mapping_attribute: Optional[pulumi.Input[str]] = None,
                 group_member_user_attribute: Optional[pulumi.Input[str]] = None,
                 group_name_attribute: Optional[pulumi.Input[str]] = None,
                 group_object_class: Optional[pulumi.Input[str]] = None,
                 group_search_attribute: Optional[pulumi.Input[str]] = None,
                 group_search_base: Optional[pulumi.Input[str]] = None,
                 group_search_filter: Optional[pulumi.Input[str]] = None,
                 labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 nested_group_membership_enabled: Optional[pulumi.Input[bool]] = None,
                 port: Optional[pulumi.Input[int]] = None,
                 servers: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 service_account_password: Optional[pulumi.Input[str]] = None,
                 service_account_username: Optional[pulumi.Input[str]] = None,
                 start_tls: Optional[pulumi.Input[bool]] = None,
                 test_password: Optional[pulumi.Input[str]] = None,
                 test_username: Optional[pulumi.Input[str]] = None,
                 tls: Optional[pulumi.Input[bool]] = None,
                 user_disabled_bit_mask: Optional[pulumi.Input[int]] = None,
                 user_enabled_attribute: Optional[pulumi.Input[str]] = None,
                 user_login_attribute: Optional[pulumi.Input[str]] = None,
                 user_name_attribute: Optional[pulumi.Input[str]] = None,
                 user_object_class: Optional[pulumi.Input[str]] = None,
                 user_search_attribute: Optional[pulumi.Input[str]] = None,
                 user_search_base: Optional[pulumi.Input[str]] = None,
                 user_search_filter: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        """
        Create a ActiveDirectory resource with the given unique name, props, and options.
        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[Mapping[str, Any]] annotations: Annotations of the resource
        :param pulumi.Input[Mapping[str, Any]] labels: Labels of the resource
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: ActiveDirectoryArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        Create a ActiveDirectory resource with the given unique name, props, and options.
        :param str resource_name: The name of the resource.
        :param ActiveDirectoryArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(ActiveDirectoryArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 access_mode: Optional[pulumi.Input[str]] = None,
                 allowed_principal_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 annotations: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 certificate: Optional[pulumi.Input[str]] = None,
                 connection_timeout: Optional[pulumi.Input[int]] = None,
                 default_login_domain: Optional[pulumi.Input[str]] = None,
                 enabled: Optional[pulumi.Input[bool]] = None,
                 group_dn_attribute: Optional[pulumi.Input[str]] = None,
                 group_member_mapping_attribute: Optional[pulumi.Input[str]] = None,
                 group_member_user_attribute: Optional[pulumi.Input[str]] = None,
                 group_name_attribute: Optional[pulumi.Input[str]] = None,
                 group_object_class: Optional[pulumi.Input[str]] = None,
                 group_search_attribute: Optional[pulumi.Input[str]] = None,
                 group_search_base: Optional[pulumi.Input[str]] = None,
                 group_search_filter: Optional[pulumi.Input[str]] = None,
                 labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
                 nested_group_membership_enabled: Optional[pulumi.Input[bool]] = None,
                 port: Optional[pulumi.Input[int]] = None,
                 servers: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
                 service_account_password: Optional[pulumi.Input[str]] = None,
                 service_account_username: Optional[pulumi.Input[str]] = None,
                 start_tls: Optional[pulumi.Input[bool]] = None,
                 test_password: Optional[pulumi.Input[str]] = None,
                 test_username: Optional[pulumi.Input[str]] = None,
                 tls: Optional[pulumi.Input[bool]] = None,
                 user_disabled_bit_mask: Optional[pulumi.Input[int]] = None,
                 user_enabled_attribute: Optional[pulumi.Input[str]] = None,
                 user_login_attribute: Optional[pulumi.Input[str]] = None,
                 user_name_attribute: Optional[pulumi.Input[str]] = None,
                 user_object_class: Optional[pulumi.Input[str]] = None,
                 user_search_attribute: Optional[pulumi.Input[str]] = None,
                 user_search_base: Optional[pulumi.Input[str]] = None,
                 user_search_filter: Optional[pulumi.Input[str]] = None,
                 __props__=None):
        pulumi.log.warn("""ActiveDirectory is deprecated: rancher2.ActiveDirectory has been deprecated in favor of rancher2.AuthConfigActiveDirectory""")
        if opts is None:
            opts = pulumi.ResourceOptions()
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.version is None:
            opts.version = _utilities.get_version()
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = ActiveDirectoryArgs.__new__(ActiveDirectoryArgs)

            __props__.__dict__["access_mode"] = access_mode
            __props__.__dict__["allowed_principal_ids"] = allowed_principal_ids
            __props__.__dict__["annotations"] = annotations
            __props__.__dict__["certificate"] = certificate
            __props__.__dict__["connection_timeout"] = connection_timeout
            __props__.__dict__["default_login_domain"] = default_login_domain
            __props__.__dict__["enabled"] = enabled
            __props__.__dict__["group_dn_attribute"] = group_dn_attribute
            __props__.__dict__["group_member_mapping_attribute"] = group_member_mapping_attribute
            __props__.__dict__["group_member_user_attribute"] = group_member_user_attribute
            __props__.__dict__["group_name_attribute"] = group_name_attribute
            __props__.__dict__["group_object_class"] = group_object_class
            __props__.__dict__["group_search_attribute"] = group_search_attribute
            __props__.__dict__["group_search_base"] = group_search_base
            __props__.__dict__["group_search_filter"] = group_search_filter
            __props__.__dict__["labels"] = labels
            __props__.__dict__["nested_group_membership_enabled"] = nested_group_membership_enabled
            __props__.__dict__["port"] = port
            if servers is None and not opts.urn:
                raise TypeError("Missing required property 'servers'")
            __props__.__dict__["servers"] = servers
            if service_account_password is None and not opts.urn:
                raise TypeError("Missing required property 'service_account_password'")
            __props__.__dict__["service_account_password"] = service_account_password
            if service_account_username is None and not opts.urn:
                raise TypeError("Missing required property 'service_account_username'")
            __props__.__dict__["service_account_username"] = service_account_username
            __props__.__dict__["start_tls"] = start_tls
            if test_password is None and not opts.urn:
                raise TypeError("Missing required property 'test_password'")
            __props__.__dict__["test_password"] = test_password
            if test_username is None and not opts.urn:
                raise TypeError("Missing required property 'test_username'")
            __props__.__dict__["test_username"] = test_username
            __props__.__dict__["tls"] = tls
            __props__.__dict__["user_disabled_bit_mask"] = user_disabled_bit_mask
            __props__.__dict__["user_enabled_attribute"] = user_enabled_attribute
            __props__.__dict__["user_login_attribute"] = user_login_attribute
            __props__.__dict__["user_name_attribute"] = user_name_attribute
            __props__.__dict__["user_object_class"] = user_object_class
            __props__.__dict__["user_search_attribute"] = user_search_attribute
            if user_search_base is None and not opts.urn:
                raise TypeError("Missing required property 'user_search_base'")
            __props__.__dict__["user_search_base"] = user_search_base
            __props__.__dict__["user_search_filter"] = user_search_filter
            __props__.__dict__["name"] = None
            __props__.__dict__["type"] = None
        super(ActiveDirectory, __self__).__init__(
            'rancher2:index/activeDirectory:ActiveDirectory',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            access_mode: Optional[pulumi.Input[str]] = None,
            allowed_principal_ids: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            annotations: Optional[pulumi.Input[Mapping[str, Any]]] = None,
            certificate: Optional[pulumi.Input[str]] = None,
            connection_timeout: Optional[pulumi.Input[int]] = None,
            default_login_domain: Optional[pulumi.Input[str]] = None,
            enabled: Optional[pulumi.Input[bool]] = None,
            group_dn_attribute: Optional[pulumi.Input[str]] = None,
            group_member_mapping_attribute: Optional[pulumi.Input[str]] = None,
            group_member_user_attribute: Optional[pulumi.Input[str]] = None,
            group_name_attribute: Optional[pulumi.Input[str]] = None,
            group_object_class: Optional[pulumi.Input[str]] = None,
            group_search_attribute: Optional[pulumi.Input[str]] = None,
            group_search_base: Optional[pulumi.Input[str]] = None,
            group_search_filter: Optional[pulumi.Input[str]] = None,
            labels: Optional[pulumi.Input[Mapping[str, Any]]] = None,
            name: Optional[pulumi.Input[str]] = None,
            nested_group_membership_enabled: Optional[pulumi.Input[bool]] = None,
            port: Optional[pulumi.Input[int]] = None,
            servers: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
            service_account_password: Optional[pulumi.Input[str]] = None,
            service_account_username: Optional[pulumi.Input[str]] = None,
            start_tls: Optional[pulumi.Input[bool]] = None,
            test_password: Optional[pulumi.Input[str]] = None,
            test_username: Optional[pulumi.Input[str]] = None,
            tls: Optional[pulumi.Input[bool]] = None,
            type: Optional[pulumi.Input[str]] = None,
            user_disabled_bit_mask: Optional[pulumi.Input[int]] = None,
            user_enabled_attribute: Optional[pulumi.Input[str]] = None,
            user_login_attribute: Optional[pulumi.Input[str]] = None,
            user_name_attribute: Optional[pulumi.Input[str]] = None,
            user_object_class: Optional[pulumi.Input[str]] = None,
            user_search_attribute: Optional[pulumi.Input[str]] = None,
            user_search_base: Optional[pulumi.Input[str]] = None,
            user_search_filter: Optional[pulumi.Input[str]] = None) -> 'ActiveDirectory':
        """
        Get an existing ActiveDirectory resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[Mapping[str, Any]] annotations: Annotations of the resource
        :param pulumi.Input[Mapping[str, Any]] labels: Labels of the resource
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _ActiveDirectoryState.__new__(_ActiveDirectoryState)

        __props__.__dict__["access_mode"] = access_mode
        __props__.__dict__["allowed_principal_ids"] = allowed_principal_ids
        __props__.__dict__["annotations"] = annotations
        __props__.__dict__["certificate"] = certificate
        __props__.__dict__["connection_timeout"] = connection_timeout
        __props__.__dict__["default_login_domain"] = default_login_domain
        __props__.__dict__["enabled"] = enabled
        __props__.__dict__["group_dn_attribute"] = group_dn_attribute
        __props__.__dict__["group_member_mapping_attribute"] = group_member_mapping_attribute
        __props__.__dict__["group_member_user_attribute"] = group_member_user_attribute
        __props__.__dict__["group_name_attribute"] = group_name_attribute
        __props__.__dict__["group_object_class"] = group_object_class
        __props__.__dict__["group_search_attribute"] = group_search_attribute
        __props__.__dict__["group_search_base"] = group_search_base
        __props__.__dict__["group_search_filter"] = group_search_filter
        __props__.__dict__["labels"] = labels
        __props__.__dict__["name"] = name
        __props__.__dict__["nested_group_membership_enabled"] = nested_group_membership_enabled
        __props__.__dict__["port"] = port
        __props__.__dict__["servers"] = servers
        __props__.__dict__["service_account_password"] = service_account_password
        __props__.__dict__["service_account_username"] = service_account_username
        __props__.__dict__["start_tls"] = start_tls
        __props__.__dict__["test_password"] = test_password
        __props__.__dict__["test_username"] = test_username
        __props__.__dict__["tls"] = tls
        __props__.__dict__["type"] = type
        __props__.__dict__["user_disabled_bit_mask"] = user_disabled_bit_mask
        __props__.__dict__["user_enabled_attribute"] = user_enabled_attribute
        __props__.__dict__["user_login_attribute"] = user_login_attribute
        __props__.__dict__["user_name_attribute"] = user_name_attribute
        __props__.__dict__["user_object_class"] = user_object_class
        __props__.__dict__["user_search_attribute"] = user_search_attribute
        __props__.__dict__["user_search_base"] = user_search_base
        __props__.__dict__["user_search_filter"] = user_search_filter
        return ActiveDirectory(resource_name, opts=opts, __props__=__props__)

    @property
    @pulumi.getter(name="accessMode")
    def access_mode(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "access_mode")

    @property
    @pulumi.getter(name="allowedPrincipalIds")
    def allowed_principal_ids(self) -> pulumi.Output[Optional[Sequence[str]]]:
        return pulumi.get(self, "allowed_principal_ids")

    @property
    @pulumi.getter
    def annotations(self) -> pulumi.Output[Mapping[str, Any]]:
        """
        Annotations of the resource
        """
        return pulumi.get(self, "annotations")

    @property
    @pulumi.getter
    def certificate(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "certificate")

    @property
    @pulumi.getter(name="connectionTimeout")
    def connection_timeout(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "connection_timeout")

    @property
    @pulumi.getter(name="defaultLoginDomain")
    def default_login_domain(self) -> pulumi.Output[Optional[str]]:
        return pulumi.get(self, "default_login_domain")

    @property
    @pulumi.getter
    def enabled(self) -> pulumi.Output[Optional[bool]]:
        return pulumi.get(self, "enabled")

    @property
    @pulumi.getter(name="groupDnAttribute")
    def group_dn_attribute(self) -> pulumi.Output[str]:
        return pulumi.get(self, "group_dn_attribute")

    @property
    @pulumi.getter(name="groupMemberMappingAttribute")
    def group_member_mapping_attribute(self) -> pulumi.Output[str]:
        return pulumi.get(self, "group_member_mapping_attribute")

    @property
    @pulumi.getter(name="groupMemberUserAttribute")
    def group_member_user_attribute(self) -> pulumi.Output[str]:
        return pulumi.get(self, "group_member_user_attribute")

    @property
    @pulumi.getter(name="groupNameAttribute")
    def group_name_attribute(self) -> pulumi.Output[str]:
        return pulumi.get(self, "group_name_attribute")

    @property
    @pulumi.getter(name="groupObjectClass")
    def group_object_class(self) -> pulumi.Output[str]:
        return pulumi.get(self, "group_object_class")

    @property
    @pulumi.getter(name="groupSearchAttribute")
    def group_search_attribute(self) -> pulumi.Output[str]:
        return pulumi.get(self, "group_search_attribute")

    @property
    @pulumi.getter(name="groupSearchBase")
    def group_search_base(self) -> pulumi.Output[str]:
        return pulumi.get(self, "group_search_base")

    @property
    @pulumi.getter(name="groupSearchFilter")
    def group_search_filter(self) -> pulumi.Output[str]:
        return pulumi.get(self, "group_search_filter")

    @property
    @pulumi.getter
    def labels(self) -> pulumi.Output[Mapping[str, Any]]:
        """
        Labels of the resource
        """
        return pulumi.get(self, "labels")

    @property
    @pulumi.getter
    def name(self) -> pulumi.Output[str]:
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="nestedGroupMembershipEnabled")
    def nested_group_membership_enabled(self) -> pulumi.Output[bool]:
        return pulumi.get(self, "nested_group_membership_enabled")

    @property
    @pulumi.getter
    def port(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "port")

    @property
    @pulumi.getter
    def servers(self) -> pulumi.Output[Sequence[str]]:
        return pulumi.get(self, "servers")

    @property
    @pulumi.getter(name="serviceAccountPassword")
    def service_account_password(self) -> pulumi.Output[str]:
        return pulumi.get(self, "service_account_password")

    @property
    @pulumi.getter(name="serviceAccountUsername")
    def service_account_username(self) -> pulumi.Output[str]:
        return pulumi.get(self, "service_account_username")

    @property
    @pulumi.getter(name="startTls")
    def start_tls(self) -> pulumi.Output[bool]:
        return pulumi.get(self, "start_tls")

    @property
    @pulumi.getter(name="testPassword")
    def test_password(self) -> pulumi.Output[str]:
        return pulumi.get(self, "test_password")

    @property
    @pulumi.getter(name="testUsername")
    def test_username(self) -> pulumi.Output[str]:
        return pulumi.get(self, "test_username")

    @property
    @pulumi.getter
    def tls(self) -> pulumi.Output[bool]:
        return pulumi.get(self, "tls")

    @property
    @pulumi.getter
    def type(self) -> pulumi.Output[str]:
        return pulumi.get(self, "type")

    @property
    @pulumi.getter(name="userDisabledBitMask")
    def user_disabled_bit_mask(self) -> pulumi.Output[Optional[int]]:
        return pulumi.get(self, "user_disabled_bit_mask")

    @property
    @pulumi.getter(name="userEnabledAttribute")
    def user_enabled_attribute(self) -> pulumi.Output[str]:
        return pulumi.get(self, "user_enabled_attribute")

    @property
    @pulumi.getter(name="userLoginAttribute")
    def user_login_attribute(self) -> pulumi.Output[str]:
        return pulumi.get(self, "user_login_attribute")

    @property
    @pulumi.getter(name="userNameAttribute")
    def user_name_attribute(self) -> pulumi.Output[str]:
        return pulumi.get(self, "user_name_attribute")

    @property
    @pulumi.getter(name="userObjectClass")
    def user_object_class(self) -> pulumi.Output[str]:
        return pulumi.get(self, "user_object_class")

    @property
    @pulumi.getter(name="userSearchAttribute")
    def user_search_attribute(self) -> pulumi.Output[str]:
        return pulumi.get(self, "user_search_attribute")

    @property
    @pulumi.getter(name="userSearchBase")
    def user_search_base(self) -> pulumi.Output[str]:
        return pulumi.get(self, "user_search_base")

    @property
    @pulumi.getter(name="userSearchFilter")
    def user_search_filter(self) -> pulumi.Output[str]:
        return pulumi.get(self, "user_search_filter")

