# 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 builtins
import copy
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities
from . import outputs

__all__ = [
    'GetDeviceResult',
    'AwaitableGetDeviceResult',
    'get_device',
    'get_device_output',
]

@pulumi.output_type
class GetDeviceResult:
    """
    A collection of values returned by getDevice.
    """
    def __init__(__self__, authentication_dtls_required=None, authentication_enable_key_wrap=None, authentication_enable_multi_secret=None, authentication_encryption_key=None, authentication_encryption_key_format=None, authentication_message_authenticator_code_key=None, authentication_network_protocol=None, authentication_radius_shared_secret=None, authentication_second_radius_shared_secret=None, coa_port=None, description=None, dtls_dns_name=None, id=None, ips=None, model_name=None, name=None, network_device_groups=None, profile_name=None, snmp_link_trap_query=None, snmp_mac_trap_query=None, snmp_originating_policy_service_node=None, snmp_polling_interval=None, snmp_ro_community=None, snmp_version=None, software_version=None, tacacs_connect_mode_options=None, tacacs_shared_secret=None, trustsec_coa_source_host=None, trustsec_device_id=None, trustsec_device_password=None, trustsec_download_enviroment_data_every_x_seconds=None, trustsec_download_peer_authorization_policy_every_x_seconds=None, trustsec_download_sgacl_lists_every_x_seconds=None, trustsec_enable_mode_password=None, trustsec_exec_mode_password=None, trustsec_exec_mode_username=None, trustsec_include_when_deploying_sgt_updates=None, trustsec_other_sga_devices_to_trust_this_device=None, trustsec_re_authentication_every_x_seconds=None, trustsec_rest_api_password=None, trustsec_rest_api_username=None, trustsec_send_configuration_to_device=None, trustsec_send_configuration_to_device_using=None):
        if authentication_dtls_required and not isinstance(authentication_dtls_required, bool):
            raise TypeError("Expected argument 'authentication_dtls_required' to be a bool")
        pulumi.set(__self__, "authentication_dtls_required", authentication_dtls_required)
        if authentication_enable_key_wrap and not isinstance(authentication_enable_key_wrap, bool):
            raise TypeError("Expected argument 'authentication_enable_key_wrap' to be a bool")
        pulumi.set(__self__, "authentication_enable_key_wrap", authentication_enable_key_wrap)
        if authentication_enable_multi_secret and not isinstance(authentication_enable_multi_secret, bool):
            raise TypeError("Expected argument 'authentication_enable_multi_secret' to be a bool")
        pulumi.set(__self__, "authentication_enable_multi_secret", authentication_enable_multi_secret)
        if authentication_encryption_key and not isinstance(authentication_encryption_key, str):
            raise TypeError("Expected argument 'authentication_encryption_key' to be a str")
        pulumi.set(__self__, "authentication_encryption_key", authentication_encryption_key)
        if authentication_encryption_key_format and not isinstance(authentication_encryption_key_format, str):
            raise TypeError("Expected argument 'authentication_encryption_key_format' to be a str")
        pulumi.set(__self__, "authentication_encryption_key_format", authentication_encryption_key_format)
        if authentication_message_authenticator_code_key and not isinstance(authentication_message_authenticator_code_key, str):
            raise TypeError("Expected argument 'authentication_message_authenticator_code_key' to be a str")
        pulumi.set(__self__, "authentication_message_authenticator_code_key", authentication_message_authenticator_code_key)
        if authentication_network_protocol and not isinstance(authentication_network_protocol, str):
            raise TypeError("Expected argument 'authentication_network_protocol' to be a str")
        pulumi.set(__self__, "authentication_network_protocol", authentication_network_protocol)
        if authentication_radius_shared_secret and not isinstance(authentication_radius_shared_secret, str):
            raise TypeError("Expected argument 'authentication_radius_shared_secret' to be a str")
        pulumi.set(__self__, "authentication_radius_shared_secret", authentication_radius_shared_secret)
        if authentication_second_radius_shared_secret and not isinstance(authentication_second_radius_shared_secret, str):
            raise TypeError("Expected argument 'authentication_second_radius_shared_secret' to be a str")
        pulumi.set(__self__, "authentication_second_radius_shared_secret", authentication_second_radius_shared_secret)
        if coa_port and not isinstance(coa_port, int):
            raise TypeError("Expected argument 'coa_port' to be a int")
        pulumi.set(__self__, "coa_port", coa_port)
        if description and not isinstance(description, str):
            raise TypeError("Expected argument 'description' to be a str")
        pulumi.set(__self__, "description", description)
        if dtls_dns_name and not isinstance(dtls_dns_name, str):
            raise TypeError("Expected argument 'dtls_dns_name' to be a str")
        pulumi.set(__self__, "dtls_dns_name", dtls_dns_name)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if ips and not isinstance(ips, list):
            raise TypeError("Expected argument 'ips' to be a list")
        pulumi.set(__self__, "ips", ips)
        if model_name and not isinstance(model_name, str):
            raise TypeError("Expected argument 'model_name' to be a str")
        pulumi.set(__self__, "model_name", model_name)
        if name and not isinstance(name, str):
            raise TypeError("Expected argument 'name' to be a str")
        pulumi.set(__self__, "name", name)
        if network_device_groups and not isinstance(network_device_groups, list):
            raise TypeError("Expected argument 'network_device_groups' to be a list")
        pulumi.set(__self__, "network_device_groups", network_device_groups)
        if profile_name and not isinstance(profile_name, str):
            raise TypeError("Expected argument 'profile_name' to be a str")
        pulumi.set(__self__, "profile_name", profile_name)
        if snmp_link_trap_query and not isinstance(snmp_link_trap_query, bool):
            raise TypeError("Expected argument 'snmp_link_trap_query' to be a bool")
        pulumi.set(__self__, "snmp_link_trap_query", snmp_link_trap_query)
        if snmp_mac_trap_query and not isinstance(snmp_mac_trap_query, bool):
            raise TypeError("Expected argument 'snmp_mac_trap_query' to be a bool")
        pulumi.set(__self__, "snmp_mac_trap_query", snmp_mac_trap_query)
        if snmp_originating_policy_service_node and not isinstance(snmp_originating_policy_service_node, str):
            raise TypeError("Expected argument 'snmp_originating_policy_service_node' to be a str")
        pulumi.set(__self__, "snmp_originating_policy_service_node", snmp_originating_policy_service_node)
        if snmp_polling_interval and not isinstance(snmp_polling_interval, int):
            raise TypeError("Expected argument 'snmp_polling_interval' to be a int")
        pulumi.set(__self__, "snmp_polling_interval", snmp_polling_interval)
        if snmp_ro_community and not isinstance(snmp_ro_community, str):
            raise TypeError("Expected argument 'snmp_ro_community' to be a str")
        pulumi.set(__self__, "snmp_ro_community", snmp_ro_community)
        if snmp_version and not isinstance(snmp_version, str):
            raise TypeError("Expected argument 'snmp_version' to be a str")
        pulumi.set(__self__, "snmp_version", snmp_version)
        if software_version and not isinstance(software_version, str):
            raise TypeError("Expected argument 'software_version' to be a str")
        pulumi.set(__self__, "software_version", software_version)
        if tacacs_connect_mode_options and not isinstance(tacacs_connect_mode_options, str):
            raise TypeError("Expected argument 'tacacs_connect_mode_options' to be a str")
        pulumi.set(__self__, "tacacs_connect_mode_options", tacacs_connect_mode_options)
        if tacacs_shared_secret and not isinstance(tacacs_shared_secret, str):
            raise TypeError("Expected argument 'tacacs_shared_secret' to be a str")
        pulumi.set(__self__, "tacacs_shared_secret", tacacs_shared_secret)
        if trustsec_coa_source_host and not isinstance(trustsec_coa_source_host, str):
            raise TypeError("Expected argument 'trustsec_coa_source_host' to be a str")
        pulumi.set(__self__, "trustsec_coa_source_host", trustsec_coa_source_host)
        if trustsec_device_id and not isinstance(trustsec_device_id, str):
            raise TypeError("Expected argument 'trustsec_device_id' to be a str")
        pulumi.set(__self__, "trustsec_device_id", trustsec_device_id)
        if trustsec_device_password and not isinstance(trustsec_device_password, str):
            raise TypeError("Expected argument 'trustsec_device_password' to be a str")
        pulumi.set(__self__, "trustsec_device_password", trustsec_device_password)
        if trustsec_download_enviroment_data_every_x_seconds and not isinstance(trustsec_download_enviroment_data_every_x_seconds, int):
            raise TypeError("Expected argument 'trustsec_download_enviroment_data_every_x_seconds' to be a int")
        pulumi.set(__self__, "trustsec_download_enviroment_data_every_x_seconds", trustsec_download_enviroment_data_every_x_seconds)
        if trustsec_download_peer_authorization_policy_every_x_seconds and not isinstance(trustsec_download_peer_authorization_policy_every_x_seconds, int):
            raise TypeError("Expected argument 'trustsec_download_peer_authorization_policy_every_x_seconds' to be a int")
        pulumi.set(__self__, "trustsec_download_peer_authorization_policy_every_x_seconds", trustsec_download_peer_authorization_policy_every_x_seconds)
        if trustsec_download_sgacl_lists_every_x_seconds and not isinstance(trustsec_download_sgacl_lists_every_x_seconds, int):
            raise TypeError("Expected argument 'trustsec_download_sgacl_lists_every_x_seconds' to be a int")
        pulumi.set(__self__, "trustsec_download_sgacl_lists_every_x_seconds", trustsec_download_sgacl_lists_every_x_seconds)
        if trustsec_enable_mode_password and not isinstance(trustsec_enable_mode_password, str):
            raise TypeError("Expected argument 'trustsec_enable_mode_password' to be a str")
        pulumi.set(__self__, "trustsec_enable_mode_password", trustsec_enable_mode_password)
        if trustsec_exec_mode_password and not isinstance(trustsec_exec_mode_password, str):
            raise TypeError("Expected argument 'trustsec_exec_mode_password' to be a str")
        pulumi.set(__self__, "trustsec_exec_mode_password", trustsec_exec_mode_password)
        if trustsec_exec_mode_username and not isinstance(trustsec_exec_mode_username, str):
            raise TypeError("Expected argument 'trustsec_exec_mode_username' to be a str")
        pulumi.set(__self__, "trustsec_exec_mode_username", trustsec_exec_mode_username)
        if trustsec_include_when_deploying_sgt_updates and not isinstance(trustsec_include_when_deploying_sgt_updates, bool):
            raise TypeError("Expected argument 'trustsec_include_when_deploying_sgt_updates' to be a bool")
        pulumi.set(__self__, "trustsec_include_when_deploying_sgt_updates", trustsec_include_when_deploying_sgt_updates)
        if trustsec_other_sga_devices_to_trust_this_device and not isinstance(trustsec_other_sga_devices_to_trust_this_device, bool):
            raise TypeError("Expected argument 'trustsec_other_sga_devices_to_trust_this_device' to be a bool")
        pulumi.set(__self__, "trustsec_other_sga_devices_to_trust_this_device", trustsec_other_sga_devices_to_trust_this_device)
        if trustsec_re_authentication_every_x_seconds and not isinstance(trustsec_re_authentication_every_x_seconds, int):
            raise TypeError("Expected argument 'trustsec_re_authentication_every_x_seconds' to be a int")
        pulumi.set(__self__, "trustsec_re_authentication_every_x_seconds", trustsec_re_authentication_every_x_seconds)
        if trustsec_rest_api_password and not isinstance(trustsec_rest_api_password, str):
            raise TypeError("Expected argument 'trustsec_rest_api_password' to be a str")
        pulumi.set(__self__, "trustsec_rest_api_password", trustsec_rest_api_password)
        if trustsec_rest_api_username and not isinstance(trustsec_rest_api_username, str):
            raise TypeError("Expected argument 'trustsec_rest_api_username' to be a str")
        pulumi.set(__self__, "trustsec_rest_api_username", trustsec_rest_api_username)
        if trustsec_send_configuration_to_device and not isinstance(trustsec_send_configuration_to_device, bool):
            raise TypeError("Expected argument 'trustsec_send_configuration_to_device' to be a bool")
        pulumi.set(__self__, "trustsec_send_configuration_to_device", trustsec_send_configuration_to_device)
        if trustsec_send_configuration_to_device_using and not isinstance(trustsec_send_configuration_to_device_using, str):
            raise TypeError("Expected argument 'trustsec_send_configuration_to_device_using' to be a str")
        pulumi.set(__self__, "trustsec_send_configuration_to_device_using", trustsec_send_configuration_to_device_using)

    @property
    @pulumi.getter(name="authenticationDtlsRequired")
    def authentication_dtls_required(self) -> builtins.bool:
        """
        Enforce use of DTLS
        """
        return pulumi.get(self, "authentication_dtls_required")

    @property
    @pulumi.getter(name="authenticationEnableKeyWrap")
    def authentication_enable_key_wrap(self) -> builtins.bool:
        """
        Enable key wrap
        """
        return pulumi.get(self, "authentication_enable_key_wrap")

    @property
    @pulumi.getter(name="authenticationEnableMultiSecret")
    def authentication_enable_multi_secret(self) -> builtins.bool:
        """
        Enable multiple RADIUS shared secrets
        """
        return pulumi.get(self, "authentication_enable_multi_secret")

    @property
    @pulumi.getter(name="authenticationEncryptionKey")
    def authentication_encryption_key(self) -> builtins.str:
        """
        Encryption key
        """
        return pulumi.get(self, "authentication_encryption_key")

    @property
    @pulumi.getter(name="authenticationEncryptionKeyFormat")
    def authentication_encryption_key_format(self) -> builtins.str:
        """
        Key input format
        """
        return pulumi.get(self, "authentication_encryption_key_format")

    @property
    @pulumi.getter(name="authenticationMessageAuthenticatorCodeKey")
    def authentication_message_authenticator_code_key(self) -> builtins.str:
        """
        Message authenticator code key
        """
        return pulumi.get(self, "authentication_message_authenticator_code_key")

    @property
    @pulumi.getter(name="authenticationNetworkProtocol")
    def authentication_network_protocol(self) -> builtins.str:
        """
        Network protocol
        """
        return pulumi.get(self, "authentication_network_protocol")

    @property
    @pulumi.getter(name="authenticationRadiusSharedSecret")
    def authentication_radius_shared_secret(self) -> builtins.str:
        """
        RADIUS shared secret
        """
        return pulumi.get(self, "authentication_radius_shared_secret")

    @property
    @pulumi.getter(name="authenticationSecondRadiusSharedSecret")
    def authentication_second_radius_shared_secret(self) -> builtins.str:
        """
        Second RADIUS shared secret
        """
        return pulumi.get(self, "authentication_second_radius_shared_secret")

    @property
    @pulumi.getter(name="coaPort")
    def coa_port(self) -> builtins.int:
        """
        CoA port
        """
        return pulumi.get(self, "coa_port")

    @property
    @pulumi.getter
    def description(self) -> builtins.str:
        """
        Description
        """
        return pulumi.get(self, "description")

    @property
    @pulumi.getter(name="dtlsDnsName")
    def dtls_dns_name(self) -> builtins.str:
        """
        This value is used to verify the client identity contained in the X.509 RADIUS/DTLS client certificate
        """
        return pulumi.get(self, "dtls_dns_name")

    @property
    @pulumi.getter
    def id(self) -> builtins.str:
        """
        The id of the object
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def ips(self) -> Sequence['outputs.GetDeviceIpResult']:
        """
        List of IP subnets
        """
        return pulumi.get(self, "ips")

    @property
    @pulumi.getter(name="modelName")
    def model_name(self) -> builtins.str:
        """
        Model name
        """
        return pulumi.get(self, "model_name")

    @property
    @pulumi.getter
    def name(self) -> builtins.str:
        """
        The name of the network device
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="networkDeviceGroups")
    def network_device_groups(self) -> Sequence[builtins.str]:
        """
        List of network device groups, e.g. `Device Type#All Device Types#ACCESS`
        """
        return pulumi.get(self, "network_device_groups")

    @property
    @pulumi.getter(name="profileName")
    def profile_name(self) -> builtins.str:
        """
        Profile name
        """
        return pulumi.get(self, "profile_name")

    @property
    @pulumi.getter(name="snmpLinkTrapQuery")
    def snmp_link_trap_query(self) -> builtins.bool:
        """
        SNMP link Trap Query
        """
        return pulumi.get(self, "snmp_link_trap_query")

    @property
    @pulumi.getter(name="snmpMacTrapQuery")
    def snmp_mac_trap_query(self) -> builtins.bool:
        """
        SNMP MAC Trap Query
        """
        return pulumi.get(self, "snmp_mac_trap_query")

    @property
    @pulumi.getter(name="snmpOriginatingPolicyServiceNode")
    def snmp_originating_policy_service_node(self) -> builtins.str:
        """
        Originating Policy Services Node
        """
        return pulumi.get(self, "snmp_originating_policy_service_node")

    @property
    @pulumi.getter(name="snmpPollingInterval")
    def snmp_polling_interval(self) -> builtins.int:
        """
        SNMP Polling Interval in seconds
        """
        return pulumi.get(self, "snmp_polling_interval")

    @property
    @pulumi.getter(name="snmpRoCommunity")
    def snmp_ro_community(self) -> builtins.str:
        """
        SNMP RO Community
        """
        return pulumi.get(self, "snmp_ro_community")

    @property
    @pulumi.getter(name="snmpVersion")
    def snmp_version(self) -> builtins.str:
        """
        SNMP version
        """
        return pulumi.get(self, "snmp_version")

    @property
    @pulumi.getter(name="softwareVersion")
    def software_version(self) -> builtins.str:
        """
        Software version
        """
        return pulumi.get(self, "software_version")

    @property
    @pulumi.getter(name="tacacsConnectModeOptions")
    def tacacs_connect_mode_options(self) -> builtins.str:
        """
        Connect mode options
        """
        return pulumi.get(self, "tacacs_connect_mode_options")

    @property
    @pulumi.getter(name="tacacsSharedSecret")
    def tacacs_shared_secret(self) -> builtins.str:
        """
        Shared secret
        """
        return pulumi.get(self, "tacacs_shared_secret")

    @property
    @pulumi.getter(name="trustsecCoaSourceHost")
    def trustsec_coa_source_host(self) -> builtins.str:
        """
        CoA source host
        """
        return pulumi.get(self, "trustsec_coa_source_host")

    @property
    @pulumi.getter(name="trustsecDeviceId")
    def trustsec_device_id(self) -> builtins.str:
        """
        TrustSec device ID
        """
        return pulumi.get(self, "trustsec_device_id")

    @property
    @pulumi.getter(name="trustsecDevicePassword")
    def trustsec_device_password(self) -> builtins.str:
        """
        TrustSec device password
        """
        return pulumi.get(self, "trustsec_device_password")

    @property
    @pulumi.getter(name="trustsecDownloadEnviromentDataEveryXSeconds")
    def trustsec_download_enviroment_data_every_x_seconds(self) -> builtins.int:
        """
        Download environment data every X seconds
        """
        return pulumi.get(self, "trustsec_download_enviroment_data_every_x_seconds")

    @property
    @pulumi.getter(name="trustsecDownloadPeerAuthorizationPolicyEveryXSeconds")
    def trustsec_download_peer_authorization_policy_every_x_seconds(self) -> builtins.int:
        """
        Download peer authorization policy every X seconds
        """
        return pulumi.get(self, "trustsec_download_peer_authorization_policy_every_x_seconds")

    @property
    @pulumi.getter(name="trustsecDownloadSgaclListsEveryXSeconds")
    def trustsec_download_sgacl_lists_every_x_seconds(self) -> builtins.int:
        """
        Download SGACL lists every X seconds
        """
        return pulumi.get(self, "trustsec_download_sgacl_lists_every_x_seconds")

    @property
    @pulumi.getter(name="trustsecEnableModePassword")
    def trustsec_enable_mode_password(self) -> builtins.str:
        """
        Enable mode password
        """
        return pulumi.get(self, "trustsec_enable_mode_password")

    @property
    @pulumi.getter(name="trustsecExecModePassword")
    def trustsec_exec_mode_password(self) -> builtins.str:
        """
        EXEC mode password
        """
        return pulumi.get(self, "trustsec_exec_mode_password")

    @property
    @pulumi.getter(name="trustsecExecModeUsername")
    def trustsec_exec_mode_username(self) -> builtins.str:
        """
        EXEC mode username
        """
        return pulumi.get(self, "trustsec_exec_mode_username")

    @property
    @pulumi.getter(name="trustsecIncludeWhenDeployingSgtUpdates")
    def trustsec_include_when_deploying_sgt_updates(self) -> builtins.bool:
        """
        Include this device when deploying Security Group Tag Mapping Updates
        """
        return pulumi.get(self, "trustsec_include_when_deploying_sgt_updates")

    @property
    @pulumi.getter(name="trustsecOtherSgaDevicesToTrustThisDevice")
    def trustsec_other_sga_devices_to_trust_this_device(self) -> builtins.bool:
        """
        Other TrustSec devices to trust this device
        """
        return pulumi.get(self, "trustsec_other_sga_devices_to_trust_this_device")

    @property
    @pulumi.getter(name="trustsecReAuthenticationEveryXSeconds")
    def trustsec_re_authentication_every_x_seconds(self) -> builtins.int:
        """
        Re-authenticate every X seconds
        """
        return pulumi.get(self, "trustsec_re_authentication_every_x_seconds")

    @property
    @pulumi.getter(name="trustsecRestApiPassword")
    def trustsec_rest_api_password(self) -> builtins.str:
        """
        REST API password
        """
        return pulumi.get(self, "trustsec_rest_api_password")

    @property
    @pulumi.getter(name="trustsecRestApiUsername")
    def trustsec_rest_api_username(self) -> builtins.str:
        """
        REST API username
        """
        return pulumi.get(self, "trustsec_rest_api_username")

    @property
    @pulumi.getter(name="trustsecSendConfigurationToDevice")
    def trustsec_send_configuration_to_device(self) -> builtins.bool:
        """
        Send configuration to device
        """
        return pulumi.get(self, "trustsec_send_configuration_to_device")

    @property
    @pulumi.getter(name="trustsecSendConfigurationToDeviceUsing")
    def trustsec_send_configuration_to_device_using(self) -> builtins.str:
        """
        Send configuration to device using
        """
        return pulumi.get(self, "trustsec_send_configuration_to_device_using")


class AwaitableGetDeviceResult(GetDeviceResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetDeviceResult(
            authentication_dtls_required=self.authentication_dtls_required,
            authentication_enable_key_wrap=self.authentication_enable_key_wrap,
            authentication_enable_multi_secret=self.authentication_enable_multi_secret,
            authentication_encryption_key=self.authentication_encryption_key,
            authentication_encryption_key_format=self.authentication_encryption_key_format,
            authentication_message_authenticator_code_key=self.authentication_message_authenticator_code_key,
            authentication_network_protocol=self.authentication_network_protocol,
            authentication_radius_shared_secret=self.authentication_radius_shared_secret,
            authentication_second_radius_shared_secret=self.authentication_second_radius_shared_secret,
            coa_port=self.coa_port,
            description=self.description,
            dtls_dns_name=self.dtls_dns_name,
            id=self.id,
            ips=self.ips,
            model_name=self.model_name,
            name=self.name,
            network_device_groups=self.network_device_groups,
            profile_name=self.profile_name,
            snmp_link_trap_query=self.snmp_link_trap_query,
            snmp_mac_trap_query=self.snmp_mac_trap_query,
            snmp_originating_policy_service_node=self.snmp_originating_policy_service_node,
            snmp_polling_interval=self.snmp_polling_interval,
            snmp_ro_community=self.snmp_ro_community,
            snmp_version=self.snmp_version,
            software_version=self.software_version,
            tacacs_connect_mode_options=self.tacacs_connect_mode_options,
            tacacs_shared_secret=self.tacacs_shared_secret,
            trustsec_coa_source_host=self.trustsec_coa_source_host,
            trustsec_device_id=self.trustsec_device_id,
            trustsec_device_password=self.trustsec_device_password,
            trustsec_download_enviroment_data_every_x_seconds=self.trustsec_download_enviroment_data_every_x_seconds,
            trustsec_download_peer_authorization_policy_every_x_seconds=self.trustsec_download_peer_authorization_policy_every_x_seconds,
            trustsec_download_sgacl_lists_every_x_seconds=self.trustsec_download_sgacl_lists_every_x_seconds,
            trustsec_enable_mode_password=self.trustsec_enable_mode_password,
            trustsec_exec_mode_password=self.trustsec_exec_mode_password,
            trustsec_exec_mode_username=self.trustsec_exec_mode_username,
            trustsec_include_when_deploying_sgt_updates=self.trustsec_include_when_deploying_sgt_updates,
            trustsec_other_sga_devices_to_trust_this_device=self.trustsec_other_sga_devices_to_trust_this_device,
            trustsec_re_authentication_every_x_seconds=self.trustsec_re_authentication_every_x_seconds,
            trustsec_rest_api_password=self.trustsec_rest_api_password,
            trustsec_rest_api_username=self.trustsec_rest_api_username,
            trustsec_send_configuration_to_device=self.trustsec_send_configuration_to_device,
            trustsec_send_configuration_to_device_using=self.trustsec_send_configuration_to_device_using)


def get_device(id: Optional[builtins.str] = None,
               name: Optional[builtins.str] = None,
               opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetDeviceResult:
    """
    This data source can read the Network Device.

    ## Example Usage

    ```python
    import pulumi
    import pulumi_ise as ise

    example = ise.network.get_device(id="76d24097-41c4-4558-a4d0-a8c07ac08470")
    ```


    :param builtins.str id: The id of the object
    :param builtins.str name: The name of the network device
    """
    __args__ = dict()
    __args__['id'] = id
    __args__['name'] = name
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('ise:network/getDevice:getDevice', __args__, opts=opts, typ=GetDeviceResult).value

    return AwaitableGetDeviceResult(
        authentication_dtls_required=pulumi.get(__ret__, 'authentication_dtls_required'),
        authentication_enable_key_wrap=pulumi.get(__ret__, 'authentication_enable_key_wrap'),
        authentication_enable_multi_secret=pulumi.get(__ret__, 'authentication_enable_multi_secret'),
        authentication_encryption_key=pulumi.get(__ret__, 'authentication_encryption_key'),
        authentication_encryption_key_format=pulumi.get(__ret__, 'authentication_encryption_key_format'),
        authentication_message_authenticator_code_key=pulumi.get(__ret__, 'authentication_message_authenticator_code_key'),
        authentication_network_protocol=pulumi.get(__ret__, 'authentication_network_protocol'),
        authentication_radius_shared_secret=pulumi.get(__ret__, 'authentication_radius_shared_secret'),
        authentication_second_radius_shared_secret=pulumi.get(__ret__, 'authentication_second_radius_shared_secret'),
        coa_port=pulumi.get(__ret__, 'coa_port'),
        description=pulumi.get(__ret__, 'description'),
        dtls_dns_name=pulumi.get(__ret__, 'dtls_dns_name'),
        id=pulumi.get(__ret__, 'id'),
        ips=pulumi.get(__ret__, 'ips'),
        model_name=pulumi.get(__ret__, 'model_name'),
        name=pulumi.get(__ret__, 'name'),
        network_device_groups=pulumi.get(__ret__, 'network_device_groups'),
        profile_name=pulumi.get(__ret__, 'profile_name'),
        snmp_link_trap_query=pulumi.get(__ret__, 'snmp_link_trap_query'),
        snmp_mac_trap_query=pulumi.get(__ret__, 'snmp_mac_trap_query'),
        snmp_originating_policy_service_node=pulumi.get(__ret__, 'snmp_originating_policy_service_node'),
        snmp_polling_interval=pulumi.get(__ret__, 'snmp_polling_interval'),
        snmp_ro_community=pulumi.get(__ret__, 'snmp_ro_community'),
        snmp_version=pulumi.get(__ret__, 'snmp_version'),
        software_version=pulumi.get(__ret__, 'software_version'),
        tacacs_connect_mode_options=pulumi.get(__ret__, 'tacacs_connect_mode_options'),
        tacacs_shared_secret=pulumi.get(__ret__, 'tacacs_shared_secret'),
        trustsec_coa_source_host=pulumi.get(__ret__, 'trustsec_coa_source_host'),
        trustsec_device_id=pulumi.get(__ret__, 'trustsec_device_id'),
        trustsec_device_password=pulumi.get(__ret__, 'trustsec_device_password'),
        trustsec_download_enviroment_data_every_x_seconds=pulumi.get(__ret__, 'trustsec_download_enviroment_data_every_x_seconds'),
        trustsec_download_peer_authorization_policy_every_x_seconds=pulumi.get(__ret__, 'trustsec_download_peer_authorization_policy_every_x_seconds'),
        trustsec_download_sgacl_lists_every_x_seconds=pulumi.get(__ret__, 'trustsec_download_sgacl_lists_every_x_seconds'),
        trustsec_enable_mode_password=pulumi.get(__ret__, 'trustsec_enable_mode_password'),
        trustsec_exec_mode_password=pulumi.get(__ret__, 'trustsec_exec_mode_password'),
        trustsec_exec_mode_username=pulumi.get(__ret__, 'trustsec_exec_mode_username'),
        trustsec_include_when_deploying_sgt_updates=pulumi.get(__ret__, 'trustsec_include_when_deploying_sgt_updates'),
        trustsec_other_sga_devices_to_trust_this_device=pulumi.get(__ret__, 'trustsec_other_sga_devices_to_trust_this_device'),
        trustsec_re_authentication_every_x_seconds=pulumi.get(__ret__, 'trustsec_re_authentication_every_x_seconds'),
        trustsec_rest_api_password=pulumi.get(__ret__, 'trustsec_rest_api_password'),
        trustsec_rest_api_username=pulumi.get(__ret__, 'trustsec_rest_api_username'),
        trustsec_send_configuration_to_device=pulumi.get(__ret__, 'trustsec_send_configuration_to_device'),
        trustsec_send_configuration_to_device_using=pulumi.get(__ret__, 'trustsec_send_configuration_to_device_using'))
def get_device_output(id: Optional[pulumi.Input[Optional[builtins.str]]] = None,
                      name: Optional[pulumi.Input[Optional[builtins.str]]] = None,
                      opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetDeviceResult]:
    """
    This data source can read the Network Device.

    ## Example Usage

    ```python
    import pulumi
    import pulumi_ise as ise

    example = ise.network.get_device(id="76d24097-41c4-4558-a4d0-a8c07ac08470")
    ```


    :param builtins.str id: The id of the object
    :param builtins.str name: The name of the network device
    """
    __args__ = dict()
    __args__['id'] = id
    __args__['name'] = name
    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke_output('ise:network/getDevice:getDevice', __args__, opts=opts, typ=GetDeviceResult)
    return __ret__.apply(lambda __response__: GetDeviceResult(
        authentication_dtls_required=pulumi.get(__response__, 'authentication_dtls_required'),
        authentication_enable_key_wrap=pulumi.get(__response__, 'authentication_enable_key_wrap'),
        authentication_enable_multi_secret=pulumi.get(__response__, 'authentication_enable_multi_secret'),
        authentication_encryption_key=pulumi.get(__response__, 'authentication_encryption_key'),
        authentication_encryption_key_format=pulumi.get(__response__, 'authentication_encryption_key_format'),
        authentication_message_authenticator_code_key=pulumi.get(__response__, 'authentication_message_authenticator_code_key'),
        authentication_network_protocol=pulumi.get(__response__, 'authentication_network_protocol'),
        authentication_radius_shared_secret=pulumi.get(__response__, 'authentication_radius_shared_secret'),
        authentication_second_radius_shared_secret=pulumi.get(__response__, 'authentication_second_radius_shared_secret'),
        coa_port=pulumi.get(__response__, 'coa_port'),
        description=pulumi.get(__response__, 'description'),
        dtls_dns_name=pulumi.get(__response__, 'dtls_dns_name'),
        id=pulumi.get(__response__, 'id'),
        ips=pulumi.get(__response__, 'ips'),
        model_name=pulumi.get(__response__, 'model_name'),
        name=pulumi.get(__response__, 'name'),
        network_device_groups=pulumi.get(__response__, 'network_device_groups'),
        profile_name=pulumi.get(__response__, 'profile_name'),
        snmp_link_trap_query=pulumi.get(__response__, 'snmp_link_trap_query'),
        snmp_mac_trap_query=pulumi.get(__response__, 'snmp_mac_trap_query'),
        snmp_originating_policy_service_node=pulumi.get(__response__, 'snmp_originating_policy_service_node'),
        snmp_polling_interval=pulumi.get(__response__, 'snmp_polling_interval'),
        snmp_ro_community=pulumi.get(__response__, 'snmp_ro_community'),
        snmp_version=pulumi.get(__response__, 'snmp_version'),
        software_version=pulumi.get(__response__, 'software_version'),
        tacacs_connect_mode_options=pulumi.get(__response__, 'tacacs_connect_mode_options'),
        tacacs_shared_secret=pulumi.get(__response__, 'tacacs_shared_secret'),
        trustsec_coa_source_host=pulumi.get(__response__, 'trustsec_coa_source_host'),
        trustsec_device_id=pulumi.get(__response__, 'trustsec_device_id'),
        trustsec_device_password=pulumi.get(__response__, 'trustsec_device_password'),
        trustsec_download_enviroment_data_every_x_seconds=pulumi.get(__response__, 'trustsec_download_enviroment_data_every_x_seconds'),
        trustsec_download_peer_authorization_policy_every_x_seconds=pulumi.get(__response__, 'trustsec_download_peer_authorization_policy_every_x_seconds'),
        trustsec_download_sgacl_lists_every_x_seconds=pulumi.get(__response__, 'trustsec_download_sgacl_lists_every_x_seconds'),
        trustsec_enable_mode_password=pulumi.get(__response__, 'trustsec_enable_mode_password'),
        trustsec_exec_mode_password=pulumi.get(__response__, 'trustsec_exec_mode_password'),
        trustsec_exec_mode_username=pulumi.get(__response__, 'trustsec_exec_mode_username'),
        trustsec_include_when_deploying_sgt_updates=pulumi.get(__response__, 'trustsec_include_when_deploying_sgt_updates'),
        trustsec_other_sga_devices_to_trust_this_device=pulumi.get(__response__, 'trustsec_other_sga_devices_to_trust_this_device'),
        trustsec_re_authentication_every_x_seconds=pulumi.get(__response__, 'trustsec_re_authentication_every_x_seconds'),
        trustsec_rest_api_password=pulumi.get(__response__, 'trustsec_rest_api_password'),
        trustsec_rest_api_username=pulumi.get(__response__, 'trustsec_rest_api_username'),
        trustsec_send_configuration_to_device=pulumi.get(__response__, 'trustsec_send_configuration_to_device'),
        trustsec_send_configuration_to_device_using=pulumi.get(__response__, 'trustsec_send_configuration_to_device_using')))
