# 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 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__ = [
    'GetResult',
    'AwaitableGetResult',
    'get',
    'get_output',
]

@pulumi.output_type
class GetResult:
    """
    A collection of values returned by get.
    """
    def __init__(__self__, active_directory_fqdn=None, agent_version=None, agents=None, client_public_key=None, cloud_metadatas=None, detected_properties=None, display_name=None, dns_fqdn=None, domain_name=None, id=None, identities=None, last_status_change_time=None, location=None, location_datas=None, machine_fqdn=None, mssql_discovered=None, name=None, os_name=None, os_profiles=None, os_sku=None, os_type=None, os_version=None, parent_cluster_resource_id=None, private_link_scope_resource_id=None, resource_group_name=None, service_statuses=None, status=None, tags=None, vm_id=None, vm_uuid=None):
        if active_directory_fqdn and not isinstance(active_directory_fqdn, str):
            raise TypeError("Expected argument 'active_directory_fqdn' to be a str")
        pulumi.set(__self__, "active_directory_fqdn", active_directory_fqdn)
        if agent_version and not isinstance(agent_version, str):
            raise TypeError("Expected argument 'agent_version' to be a str")
        pulumi.set(__self__, "agent_version", agent_version)
        if agents and not isinstance(agents, list):
            raise TypeError("Expected argument 'agents' to be a list")
        pulumi.set(__self__, "agents", agents)
        if client_public_key and not isinstance(client_public_key, str):
            raise TypeError("Expected argument 'client_public_key' to be a str")
        pulumi.set(__self__, "client_public_key", client_public_key)
        if cloud_metadatas and not isinstance(cloud_metadatas, list):
            raise TypeError("Expected argument 'cloud_metadatas' to be a list")
        pulumi.set(__self__, "cloud_metadatas", cloud_metadatas)
        if detected_properties and not isinstance(detected_properties, dict):
            raise TypeError("Expected argument 'detected_properties' to be a dict")
        pulumi.set(__self__, "detected_properties", detected_properties)
        if display_name and not isinstance(display_name, str):
            raise TypeError("Expected argument 'display_name' to be a str")
        pulumi.set(__self__, "display_name", display_name)
        if dns_fqdn and not isinstance(dns_fqdn, str):
            raise TypeError("Expected argument 'dns_fqdn' to be a str")
        pulumi.set(__self__, "dns_fqdn", dns_fqdn)
        if domain_name and not isinstance(domain_name, str):
            raise TypeError("Expected argument 'domain_name' to be a str")
        pulumi.set(__self__, "domain_name", domain_name)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if identities and not isinstance(identities, list):
            raise TypeError("Expected argument 'identities' to be a list")
        pulumi.set(__self__, "identities", identities)
        if last_status_change_time and not isinstance(last_status_change_time, str):
            raise TypeError("Expected argument 'last_status_change_time' to be a str")
        pulumi.set(__self__, "last_status_change_time", last_status_change_time)
        if location and not isinstance(location, str):
            raise TypeError("Expected argument 'location' to be a str")
        pulumi.set(__self__, "location", location)
        if location_datas and not isinstance(location_datas, list):
            raise TypeError("Expected argument 'location_datas' to be a list")
        pulumi.set(__self__, "location_datas", location_datas)
        if machine_fqdn and not isinstance(machine_fqdn, str):
            raise TypeError("Expected argument 'machine_fqdn' to be a str")
        pulumi.set(__self__, "machine_fqdn", machine_fqdn)
        if mssql_discovered and not isinstance(mssql_discovered, bool):
            raise TypeError("Expected argument 'mssql_discovered' to be a bool")
        pulumi.set(__self__, "mssql_discovered", mssql_discovered)
        if name and not isinstance(name, str):
            raise TypeError("Expected argument 'name' to be a str")
        pulumi.set(__self__, "name", name)
        if os_name and not isinstance(os_name, str):
            raise TypeError("Expected argument 'os_name' to be a str")
        pulumi.set(__self__, "os_name", os_name)
        if os_profiles and not isinstance(os_profiles, list):
            raise TypeError("Expected argument 'os_profiles' to be a list")
        pulumi.set(__self__, "os_profiles", os_profiles)
        if os_sku and not isinstance(os_sku, str):
            raise TypeError("Expected argument 'os_sku' to be a str")
        pulumi.set(__self__, "os_sku", os_sku)
        if os_type and not isinstance(os_type, str):
            raise TypeError("Expected argument 'os_type' to be a str")
        pulumi.set(__self__, "os_type", os_type)
        if os_version and not isinstance(os_version, str):
            raise TypeError("Expected argument 'os_version' to be a str")
        pulumi.set(__self__, "os_version", os_version)
        if parent_cluster_resource_id and not isinstance(parent_cluster_resource_id, str):
            raise TypeError("Expected argument 'parent_cluster_resource_id' to be a str")
        pulumi.set(__self__, "parent_cluster_resource_id", parent_cluster_resource_id)
        if private_link_scope_resource_id and not isinstance(private_link_scope_resource_id, str):
            raise TypeError("Expected argument 'private_link_scope_resource_id' to be a str")
        pulumi.set(__self__, "private_link_scope_resource_id", private_link_scope_resource_id)
        if resource_group_name and not isinstance(resource_group_name, str):
            raise TypeError("Expected argument 'resource_group_name' to be a str")
        pulumi.set(__self__, "resource_group_name", resource_group_name)
        if service_statuses and not isinstance(service_statuses, list):
            raise TypeError("Expected argument 'service_statuses' to be a list")
        pulumi.set(__self__, "service_statuses", service_statuses)
        if status and not isinstance(status, str):
            raise TypeError("Expected argument 'status' to be a str")
        pulumi.set(__self__, "status", status)
        if tags and not isinstance(tags, dict):
            raise TypeError("Expected argument 'tags' to be a dict")
        pulumi.set(__self__, "tags", tags)
        if vm_id and not isinstance(vm_id, str):
            raise TypeError("Expected argument 'vm_id' to be a str")
        pulumi.set(__self__, "vm_id", vm_id)
        if vm_uuid and not isinstance(vm_uuid, str):
            raise TypeError("Expected argument 'vm_uuid' to be a str")
        pulumi.set(__self__, "vm_uuid", vm_uuid)

    @property
    @pulumi.getter(name="activeDirectoryFqdn")
    def active_directory_fqdn(self) -> str:
        """
        Specifies the AD fully qualified display name.
        """
        return pulumi.get(self, "active_directory_fqdn")

    @property
    @pulumi.getter(name="agentVersion")
    def agent_version(self) -> str:
        """
        The Azure Arc machine agent full version.
        """
        return pulumi.get(self, "agent_version")

    @property
    @pulumi.getter
    def agents(self) -> Sequence['outputs.GetAgentResult']:
        """
        A `agent` block as defined below.
        """
        return pulumi.get(self, "agents")

    @property
    @pulumi.getter(name="clientPublicKey")
    def client_public_key(self) -> str:
        """
        Public Key that the client provides to be used during initial resource onboarding.
        """
        return pulumi.get(self, "client_public_key")

    @property
    @pulumi.getter(name="cloudMetadatas")
    def cloud_metadatas(self) -> Sequence['outputs.GetCloudMetadataResult']:
        """
        A `cloud_metadata` block as defined below.
        """
        return pulumi.get(self, "cloud_metadatas")

    @property
    @pulumi.getter(name="detectedProperties")
    def detected_properties(self) -> Mapping[str, str]:
        """
        A `detected_properties` block as defined below.
        """
        return pulumi.get(self, "detected_properties")

    @property
    @pulumi.getter(name="displayName")
    def display_name(self) -> str:
        """
        Specifies the Azure Arc machine display name.
        """
        return pulumi.get(self, "display_name")

    @property
    @pulumi.getter(name="dnsFqdn")
    def dns_fqdn(self) -> str:
        """
        Specifies the DNS fully qualified display name.
        """
        return pulumi.get(self, "dns_fqdn")

    @property
    @pulumi.getter(name="domainName")
    def domain_name(self) -> str:
        """
        Specifies the Windows domain name.
        """
        return pulumi.get(self, "domain_name")

    @property
    @pulumi.getter
    def id(self) -> str:
        """
        The provider-assigned unique ID for this managed resource.
        """
        return pulumi.get(self, "id")

    @property
    @pulumi.getter
    def identities(self) -> Sequence['outputs.GetIdentityResult']:
        """
        A `identity` block as defined below.
        """
        return pulumi.get(self, "identities")

    @property
    @pulumi.getter(name="lastStatusChangeTime")
    def last_status_change_time(self) -> str:
        """
        The time of the last status change.
        """
        return pulumi.get(self, "last_status_change_time")

    @property
    @pulumi.getter
    def location(self) -> str:
        """
        The Azure Region where the Azure Arc machine exists.
        """
        return pulumi.get(self, "location")

    @property
    @pulumi.getter(name="locationDatas")
    def location_datas(self) -> Sequence['outputs.GetLocationDataResult']:
        """
        A `location_data` block as defined below.
        """
        return pulumi.get(self, "location_datas")

    @property
    @pulumi.getter(name="machineFqdn")
    def machine_fqdn(self) -> str:
        """
        Specifies the Azure Arc machine fully qualified display name.
        """
        return pulumi.get(self, "machine_fqdn")

    @property
    @pulumi.getter(name="mssqlDiscovered")
    def mssql_discovered(self) -> bool:
        """
        Specifies whether any MS SQL instance is discovered on the machine.
        """
        return pulumi.get(self, "mssql_discovered")

    @property
    @pulumi.getter
    def name(self) -> str:
        """
        A canonical name for the geographic or physical location.
        """
        return pulumi.get(self, "name")

    @property
    @pulumi.getter(name="osName")
    def os_name(self) -> str:
        """
        The Operating System running on the Azure Arc machine.
        """
        return pulumi.get(self, "os_name")

    @property
    @pulumi.getter(name="osProfiles")
    def os_profiles(self) -> Sequence['outputs.GetOsProfileResult']:
        """
        A `os_profile` block as defined below.
        """
        return pulumi.get(self, "os_profiles")

    @property
    @pulumi.getter(name="osSku")
    def os_sku(self) -> str:
        """
        Specifies the Operating System product SKU.
        """
        return pulumi.get(self, "os_sku")

    @property
    @pulumi.getter(name="osType")
    def os_type(self) -> str:
        """
        The type of Operating System. Possible values are `windows` and `linux`.
        """
        return pulumi.get(self, "os_type")

    @property
    @pulumi.getter(name="osVersion")
    def os_version(self) -> str:
        """
        The version of Operating System running on the Azure Arc machine.
        """
        return pulumi.get(self, "os_version")

    @property
    @pulumi.getter(name="parentClusterResourceId")
    def parent_cluster_resource_id(self) -> str:
        """
        The resource id of the parent cluster (Azure HCI) this machine is assigned to, if any.
        """
        return pulumi.get(self, "parent_cluster_resource_id")

    @property
    @pulumi.getter(name="privateLinkScopeResourceId")
    def private_link_scope_resource_id(self) -> str:
        """
        The resource id of the parent cluster (Azure HCI) this machine is assigned to, if any.
        """
        return pulumi.get(self, "private_link_scope_resource_id")

    @property
    @pulumi.getter(name="resourceGroupName")
    def resource_group_name(self) -> str:
        return pulumi.get(self, "resource_group_name")

    @property
    @pulumi.getter(name="serviceStatuses")
    def service_statuses(self) -> Sequence['outputs.GetServiceStatusResult']:
        """
        A `service_status` block as defined below.
        """
        return pulumi.get(self, "service_statuses")

    @property
    @pulumi.getter
    def status(self) -> str:
        """
        The current status of the service.
        """
        return pulumi.get(self, "status")

    @property
    @pulumi.getter
    def tags(self) -> Mapping[str, str]:
        """
        A mapping of tags assigned to the Hybrid Compute.
        """
        return pulumi.get(self, "tags")

    @property
    @pulumi.getter(name="vmId")
    def vm_id(self) -> str:
        """
        Specifies the Azure Arc machine unique ID.
        """
        return pulumi.get(self, "vm_id")

    @property
    @pulumi.getter(name="vmUuid")
    def vm_uuid(self) -> str:
        """
        Specifies the Arc Machine's unique SMBIOS ID.
        """
        return pulumi.get(self, "vm_uuid")


class AwaitableGetResult(GetResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetResult(
            active_directory_fqdn=self.active_directory_fqdn,
            agent_version=self.agent_version,
            agents=self.agents,
            client_public_key=self.client_public_key,
            cloud_metadatas=self.cloud_metadatas,
            detected_properties=self.detected_properties,
            display_name=self.display_name,
            dns_fqdn=self.dns_fqdn,
            domain_name=self.domain_name,
            id=self.id,
            identities=self.identities,
            last_status_change_time=self.last_status_change_time,
            location=self.location,
            location_datas=self.location_datas,
            machine_fqdn=self.machine_fqdn,
            mssql_discovered=self.mssql_discovered,
            name=self.name,
            os_name=self.os_name,
            os_profiles=self.os_profiles,
            os_sku=self.os_sku,
            os_type=self.os_type,
            os_version=self.os_version,
            parent_cluster_resource_id=self.parent_cluster_resource_id,
            private_link_scope_resource_id=self.private_link_scope_resource_id,
            resource_group_name=self.resource_group_name,
            service_statuses=self.service_statuses,
            status=self.status,
            tags=self.tags,
            vm_id=self.vm_id,
            vm_uuid=self.vm_uuid)


def get(name: Optional[str] = None,
        resource_group_name: Optional[str] = None,
        opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetResult:
    """
    Use this data source to access information about an existing Azure Arc machine.

    ## Example Usage

    ```python
    import pulumi
    import pulumi_azure as azure

    example = azure.arcmachine.get(name="existing-hcmachine",
        resource_group_name="existing-rg")
    pulumi.export("id", example.id)
    ```


    :param str name: The name of this Azure Arc machine.
    :param str resource_group_name: The name of the Resource Group where the Hybrid Compute exists.
    """
    __args__ = dict()
    __args__['name'] = name
    __args__['resourceGroupName'] = resource_group_name
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('azure:arcmachine/get:get', __args__, opts=opts, typ=GetResult).value

    return AwaitableGetResult(
        active_directory_fqdn=pulumi.get(__ret__, 'active_directory_fqdn'),
        agent_version=pulumi.get(__ret__, 'agent_version'),
        agents=pulumi.get(__ret__, 'agents'),
        client_public_key=pulumi.get(__ret__, 'client_public_key'),
        cloud_metadatas=pulumi.get(__ret__, 'cloud_metadatas'),
        detected_properties=pulumi.get(__ret__, 'detected_properties'),
        display_name=pulumi.get(__ret__, 'display_name'),
        dns_fqdn=pulumi.get(__ret__, 'dns_fqdn'),
        domain_name=pulumi.get(__ret__, 'domain_name'),
        id=pulumi.get(__ret__, 'id'),
        identities=pulumi.get(__ret__, 'identities'),
        last_status_change_time=pulumi.get(__ret__, 'last_status_change_time'),
        location=pulumi.get(__ret__, 'location'),
        location_datas=pulumi.get(__ret__, 'location_datas'),
        machine_fqdn=pulumi.get(__ret__, 'machine_fqdn'),
        mssql_discovered=pulumi.get(__ret__, 'mssql_discovered'),
        name=pulumi.get(__ret__, 'name'),
        os_name=pulumi.get(__ret__, 'os_name'),
        os_profiles=pulumi.get(__ret__, 'os_profiles'),
        os_sku=pulumi.get(__ret__, 'os_sku'),
        os_type=pulumi.get(__ret__, 'os_type'),
        os_version=pulumi.get(__ret__, 'os_version'),
        parent_cluster_resource_id=pulumi.get(__ret__, 'parent_cluster_resource_id'),
        private_link_scope_resource_id=pulumi.get(__ret__, 'private_link_scope_resource_id'),
        resource_group_name=pulumi.get(__ret__, 'resource_group_name'),
        service_statuses=pulumi.get(__ret__, 'service_statuses'),
        status=pulumi.get(__ret__, 'status'),
        tags=pulumi.get(__ret__, 'tags'),
        vm_id=pulumi.get(__ret__, 'vm_id'),
        vm_uuid=pulumi.get(__ret__, 'vm_uuid'))
def get_output(name: Optional[pulumi.Input[str]] = None,
               resource_group_name: Optional[pulumi.Input[str]] = None,
               opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetResult]:
    """
    Use this data source to access information about an existing Azure Arc machine.

    ## Example Usage

    ```python
    import pulumi
    import pulumi_azure as azure

    example = azure.arcmachine.get(name="existing-hcmachine",
        resource_group_name="existing-rg")
    pulumi.export("id", example.id)
    ```


    :param str name: The name of this Azure Arc machine.
    :param str resource_group_name: The name of the Resource Group where the Hybrid Compute exists.
    """
    __args__ = dict()
    __args__['name'] = name
    __args__['resourceGroupName'] = resource_group_name
    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke_output('azure:arcmachine/get:get', __args__, opts=opts, typ=GetResult)
    return __ret__.apply(lambda __response__: GetResult(
        active_directory_fqdn=pulumi.get(__response__, 'active_directory_fqdn'),
        agent_version=pulumi.get(__response__, 'agent_version'),
        agents=pulumi.get(__response__, 'agents'),
        client_public_key=pulumi.get(__response__, 'client_public_key'),
        cloud_metadatas=pulumi.get(__response__, 'cloud_metadatas'),
        detected_properties=pulumi.get(__response__, 'detected_properties'),
        display_name=pulumi.get(__response__, 'display_name'),
        dns_fqdn=pulumi.get(__response__, 'dns_fqdn'),
        domain_name=pulumi.get(__response__, 'domain_name'),
        id=pulumi.get(__response__, 'id'),
        identities=pulumi.get(__response__, 'identities'),
        last_status_change_time=pulumi.get(__response__, 'last_status_change_time'),
        location=pulumi.get(__response__, 'location'),
        location_datas=pulumi.get(__response__, 'location_datas'),
        machine_fqdn=pulumi.get(__response__, 'machine_fqdn'),
        mssql_discovered=pulumi.get(__response__, 'mssql_discovered'),
        name=pulumi.get(__response__, 'name'),
        os_name=pulumi.get(__response__, 'os_name'),
        os_profiles=pulumi.get(__response__, 'os_profiles'),
        os_sku=pulumi.get(__response__, 'os_sku'),
        os_type=pulumi.get(__response__, 'os_type'),
        os_version=pulumi.get(__response__, 'os_version'),
        parent_cluster_resource_id=pulumi.get(__response__, 'parent_cluster_resource_id'),
        private_link_scope_resource_id=pulumi.get(__response__, 'private_link_scope_resource_id'),
        resource_group_name=pulumi.get(__response__, 'resource_group_name'),
        service_statuses=pulumi.get(__response__, 'service_statuses'),
        status=pulumi.get(__response__, 'status'),
        tags=pulumi.get(__response__, 'tags'),
        vm_id=pulumi.get(__response__, 'vm_id'),
        vm_uuid=pulumi.get(__response__, 'vm_uuid')))
