# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
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
from ._inputs import *

__all__ = [
    'GetAzureProxyResult',
    'AwaitableGetAzureProxyResult',
    'get_azure_proxy',
    'get_azure_proxy_output',
]

@pulumi.output_type
class GetAzureProxyResult:
    """
    A collection of values returned by getAzureProxy.
    """
    def __init__(__self__, allocate_static_ip=None, api_key=None, certificate_id=None, certificates=None, cloud_connector_id=None, delete_cloud_resources_on_destroy=None, host_name=None, id=None, identifier=None, keypair=None, machine_type=None, name=None, region=None, resource_group=None, security_groups=None, subnet_id=None, vpc=None):
        if allocate_static_ip and not isinstance(allocate_static_ip, bool):
            raise TypeError("Expected argument 'allocate_static_ip' to be a bool")
        pulumi.set(__self__, "allocate_static_ip", allocate_static_ip)
        if api_key and not isinstance(api_key, str):
            raise TypeError("Expected argument 'api_key' to be a str")
        pulumi.set(__self__, "api_key", api_key)
        if certificate_id and not isinstance(certificate_id, str):
            raise TypeError("Expected argument 'certificate_id' to be a str")
        pulumi.set(__self__, "certificate_id", certificate_id)
        if certificates and not isinstance(certificates, dict):
            raise TypeError("Expected argument 'certificates' to be a dict")
        pulumi.set(__self__, "certificates", certificates)
        if cloud_connector_id and not isinstance(cloud_connector_id, str):
            raise TypeError("Expected argument 'cloud_connector_id' to be a str")
        pulumi.set(__self__, "cloud_connector_id", cloud_connector_id)
        if delete_cloud_resources_on_destroy and not isinstance(delete_cloud_resources_on_destroy, bool):
            raise TypeError("Expected argument 'delete_cloud_resources_on_destroy' to be a bool")
        pulumi.set(__self__, "delete_cloud_resources_on_destroy", delete_cloud_resources_on_destroy)
        if host_name and not isinstance(host_name, str):
            raise TypeError("Expected argument 'host_name' to be a str")
        pulumi.set(__self__, "host_name", host_name)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if identifier and not isinstance(identifier, str):
            raise TypeError("Expected argument 'identifier' to be a str")
        pulumi.set(__self__, "identifier", identifier)
        if keypair and not isinstance(keypair, str):
            raise TypeError("Expected argument 'keypair' to be a str")
        pulumi.set(__self__, "keypair", keypair)
        if machine_type and not isinstance(machine_type, str):
            raise TypeError("Expected argument 'machine_type' to be a str")
        pulumi.set(__self__, "machine_type", machine_type)
        if name and not isinstance(name, str):
            raise TypeError("Expected argument 'name' to be a str")
        pulumi.set(__self__, "name", name)
        if region and not isinstance(region, str):
            raise TypeError("Expected argument 'region' to be a str")
        pulumi.set(__self__, "region", region)
        if resource_group and not isinstance(resource_group, str):
            raise TypeError("Expected argument 'resource_group' to be a str")
        pulumi.set(__self__, "resource_group", resource_group)
        if security_groups and not isinstance(security_groups, list):
            raise TypeError("Expected argument 'security_groups' to be a list")
        pulumi.set(__self__, "security_groups", security_groups)
        if subnet_id and not isinstance(subnet_id, str):
            raise TypeError("Expected argument 'subnet_id' to be a str")
        pulumi.set(__self__, "subnet_id", subnet_id)
        if vpc and not isinstance(vpc, str):
            raise TypeError("Expected argument 'vpc' to be a str")
        pulumi.set(__self__, "vpc", vpc)

    @_builtins.property
    @pulumi.getter(name="allocateStaticIp")
    def allocate_static_ip(self) -> Optional[_builtins.bool]:
        """
        Boolean value to indicate if proxy vm needs to have static IP
        """
        return pulumi.get(self, "allocate_static_ip")

    @_builtins.property
    @pulumi.getter(name="apiKey")
    def api_key(self) -> _builtins.str:
        """
        Harness NG API key
        """
        return pulumi.get(self, "api_key")

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

    @_builtins.property
    @pulumi.getter
    def certificates(self) -> Optional['outputs.GetAzureProxyCertificatesResult']:
        return pulumi.get(self, "certificates")

    @_builtins.property
    @pulumi.getter(name="cloudConnectorId")
    def cloud_connector_id(self) -> _builtins.str:
        """
        Id of the cloud connector
        """
        return pulumi.get(self, "cloud_connector_id")

    @_builtins.property
    @pulumi.getter(name="deleteCloudResourcesOnDestroy")
    def delete_cloud_resources_on_destroy(self) -> _builtins.bool:
        return pulumi.get(self, "delete_cloud_resources_on_destroy")

    @_builtins.property
    @pulumi.getter(name="hostName")
    def host_name(self) -> _builtins.str:
        """
        Hostname for the proxy
        """
        return pulumi.get(self, "host_name")

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

    @_builtins.property
    @pulumi.getter
    def identifier(self) -> _builtins.str:
        """
        Unique identifier of the resource
        """
        return pulumi.get(self, "identifier")

    @_builtins.property
    @pulumi.getter
    def keypair(self) -> _builtins.str:
        """
        Name of SSH Key to be used for proxy VM
        """
        return pulumi.get(self, "keypair")

    @_builtins.property
    @pulumi.getter(name="machineType")
    def machine_type(self) -> _builtins.str:
        """
        Type of instance to be used for proxy
        """
        return pulumi.get(self, "machine_type")

    @_builtins.property
    @pulumi.getter
    def name(self) -> _builtins.str:
        """
        Name of the proxy
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter
    def region(self) -> _builtins.str:
        """
        Region in which cloud resources are hosted
        """
        return pulumi.get(self, "region")

    @_builtins.property
    @pulumi.getter(name="resourceGroup")
    def resource_group(self) -> _builtins.str:
        """
        Resource group in which cloud resources are hosted
        """
        return pulumi.get(self, "resource_group")

    @_builtins.property
    @pulumi.getter(name="securityGroups")
    def security_groups(self) -> Optional[Sequence[_builtins.str]]:
        """
        Security Group to define the security rules that determine the inbound and outbound traffic
        """
        return pulumi.get(self, "security_groups")

    @_builtins.property
    @pulumi.getter(name="subnetId")
    def subnet_id(self) -> _builtins.str:
        """
        Subnet in which cloud resources are hosted
        """
        return pulumi.get(self, "subnet_id")

    @_builtins.property
    @pulumi.getter
    def vpc(self) -> _builtins.str:
        """
        VPC in which cloud resources are hosted
        """
        return pulumi.get(self, "vpc")


class AwaitableGetAzureProxyResult(GetAzureProxyResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetAzureProxyResult(
            allocate_static_ip=self.allocate_static_ip,
            api_key=self.api_key,
            certificate_id=self.certificate_id,
            certificates=self.certificates,
            cloud_connector_id=self.cloud_connector_id,
            delete_cloud_resources_on_destroy=self.delete_cloud_resources_on_destroy,
            host_name=self.host_name,
            id=self.id,
            identifier=self.identifier,
            keypair=self.keypair,
            machine_type=self.machine_type,
            name=self.name,
            region=self.region,
            resource_group=self.resource_group,
            security_groups=self.security_groups,
            subnet_id=self.subnet_id,
            vpc=self.vpc)


def get_azure_proxy(allocate_static_ip: Optional[_builtins.bool] = None,
                    api_key: Optional[_builtins.str] = None,
                    certificate_id: Optional[_builtins.str] = None,
                    certificates: Optional[Union['GetAzureProxyCertificatesArgs', 'GetAzureProxyCertificatesArgsDict']] = None,
                    cloud_connector_id: Optional[_builtins.str] = None,
                    delete_cloud_resources_on_destroy: Optional[_builtins.bool] = None,
                    host_name: Optional[_builtins.str] = None,
                    keypair: Optional[_builtins.str] = None,
                    machine_type: Optional[_builtins.str] = None,
                    name: Optional[_builtins.str] = None,
                    region: Optional[_builtins.str] = None,
                    resource_group: Optional[_builtins.str] = None,
                    security_groups: Optional[Sequence[_builtins.str]] = None,
                    subnet_id: Optional[_builtins.str] = None,
                    vpc: Optional[_builtins.str] = None,
                    opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetAzureProxyResult:
    """
    Data source for Azure Autostopping proxy

    ## Example Usage


    :param _builtins.bool allocate_static_ip: Boolean value to indicate if proxy vm needs to have static IP
    :param _builtins.str api_key: Harness NG API key
    :param _builtins.str cloud_connector_id: Id of the cloud connector
    :param _builtins.str host_name: Hostname for the proxy
    :param _builtins.str keypair: Name of SSH Key to be used for proxy VM
    :param _builtins.str machine_type: Type of instance to be used for proxy
    :param _builtins.str name: Name of the proxy
    :param _builtins.str region: Region in which cloud resources are hosted
    :param _builtins.str resource_group: Resource group in which cloud resources are hosted
    :param Sequence[_builtins.str] security_groups: Security Group to define the security rules that determine the inbound and outbound traffic
    :param _builtins.str subnet_id: Subnet in which cloud resources are hosted
    :param _builtins.str vpc: VPC in which cloud resources are hosted
    """
    __args__ = dict()
    __args__['allocateStaticIp'] = allocate_static_ip
    __args__['apiKey'] = api_key
    __args__['certificateId'] = certificate_id
    __args__['certificates'] = certificates
    __args__['cloudConnectorId'] = cloud_connector_id
    __args__['deleteCloudResourcesOnDestroy'] = delete_cloud_resources_on_destroy
    __args__['hostName'] = host_name
    __args__['keypair'] = keypair
    __args__['machineType'] = machine_type
    __args__['name'] = name
    __args__['region'] = region
    __args__['resourceGroup'] = resource_group
    __args__['securityGroups'] = security_groups
    __args__['subnetId'] = subnet_id
    __args__['vpc'] = vpc
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('harness:autostopping/getAzureProxy:getAzureProxy', __args__, opts=opts, typ=GetAzureProxyResult).value

    return AwaitableGetAzureProxyResult(
        allocate_static_ip=pulumi.get(__ret__, 'allocate_static_ip'),
        api_key=pulumi.get(__ret__, 'api_key'),
        certificate_id=pulumi.get(__ret__, 'certificate_id'),
        certificates=pulumi.get(__ret__, 'certificates'),
        cloud_connector_id=pulumi.get(__ret__, 'cloud_connector_id'),
        delete_cloud_resources_on_destroy=pulumi.get(__ret__, 'delete_cloud_resources_on_destroy'),
        host_name=pulumi.get(__ret__, 'host_name'),
        id=pulumi.get(__ret__, 'id'),
        identifier=pulumi.get(__ret__, 'identifier'),
        keypair=pulumi.get(__ret__, 'keypair'),
        machine_type=pulumi.get(__ret__, 'machine_type'),
        name=pulumi.get(__ret__, 'name'),
        region=pulumi.get(__ret__, 'region'),
        resource_group=pulumi.get(__ret__, 'resource_group'),
        security_groups=pulumi.get(__ret__, 'security_groups'),
        subnet_id=pulumi.get(__ret__, 'subnet_id'),
        vpc=pulumi.get(__ret__, 'vpc'))
def get_azure_proxy_output(allocate_static_ip: Optional[pulumi.Input[Optional[_builtins.bool]]] = None,
                           api_key: Optional[pulumi.Input[_builtins.str]] = None,
                           certificate_id: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
                           certificates: Optional[pulumi.Input[Optional[Union['GetAzureProxyCertificatesArgs', 'GetAzureProxyCertificatesArgsDict']]]] = None,
                           cloud_connector_id: Optional[pulumi.Input[_builtins.str]] = None,
                           delete_cloud_resources_on_destroy: Optional[pulumi.Input[_builtins.bool]] = None,
                           host_name: Optional[pulumi.Input[_builtins.str]] = None,
                           keypair: Optional[pulumi.Input[_builtins.str]] = None,
                           machine_type: Optional[pulumi.Input[_builtins.str]] = None,
                           name: Optional[pulumi.Input[_builtins.str]] = None,
                           region: Optional[pulumi.Input[_builtins.str]] = None,
                           resource_group: Optional[pulumi.Input[_builtins.str]] = None,
                           security_groups: Optional[pulumi.Input[Optional[Sequence[_builtins.str]]]] = None,
                           subnet_id: Optional[pulumi.Input[_builtins.str]] = None,
                           vpc: Optional[pulumi.Input[_builtins.str]] = None,
                           opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetAzureProxyResult]:
    """
    Data source for Azure Autostopping proxy

    ## Example Usage


    :param _builtins.bool allocate_static_ip: Boolean value to indicate if proxy vm needs to have static IP
    :param _builtins.str api_key: Harness NG API key
    :param _builtins.str cloud_connector_id: Id of the cloud connector
    :param _builtins.str host_name: Hostname for the proxy
    :param _builtins.str keypair: Name of SSH Key to be used for proxy VM
    :param _builtins.str machine_type: Type of instance to be used for proxy
    :param _builtins.str name: Name of the proxy
    :param _builtins.str region: Region in which cloud resources are hosted
    :param _builtins.str resource_group: Resource group in which cloud resources are hosted
    :param Sequence[_builtins.str] security_groups: Security Group to define the security rules that determine the inbound and outbound traffic
    :param _builtins.str subnet_id: Subnet in which cloud resources are hosted
    :param _builtins.str vpc: VPC in which cloud resources are hosted
    """
    __args__ = dict()
    __args__['allocateStaticIp'] = allocate_static_ip
    __args__['apiKey'] = api_key
    __args__['certificateId'] = certificate_id
    __args__['certificates'] = certificates
    __args__['cloudConnectorId'] = cloud_connector_id
    __args__['deleteCloudResourcesOnDestroy'] = delete_cloud_resources_on_destroy
    __args__['hostName'] = host_name
    __args__['keypair'] = keypair
    __args__['machineType'] = machine_type
    __args__['name'] = name
    __args__['region'] = region
    __args__['resourceGroup'] = resource_group
    __args__['securityGroups'] = security_groups
    __args__['subnetId'] = subnet_id
    __args__['vpc'] = vpc
    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke_output('harness:autostopping/getAzureProxy:getAzureProxy', __args__, opts=opts, typ=GetAzureProxyResult)
    return __ret__.apply(lambda __response__: GetAzureProxyResult(
        allocate_static_ip=pulumi.get(__response__, 'allocate_static_ip'),
        api_key=pulumi.get(__response__, 'api_key'),
        certificate_id=pulumi.get(__response__, 'certificate_id'),
        certificates=pulumi.get(__response__, 'certificates'),
        cloud_connector_id=pulumi.get(__response__, 'cloud_connector_id'),
        delete_cloud_resources_on_destroy=pulumi.get(__response__, 'delete_cloud_resources_on_destroy'),
        host_name=pulumi.get(__response__, 'host_name'),
        id=pulumi.get(__response__, 'id'),
        identifier=pulumi.get(__response__, 'identifier'),
        keypair=pulumi.get(__response__, 'keypair'),
        machine_type=pulumi.get(__response__, 'machine_type'),
        name=pulumi.get(__response__, 'name'),
        region=pulumi.get(__response__, 'region'),
        resource_group=pulumi.get(__response__, 'resource_group'),
        security_groups=pulumi.get(__response__, 'security_groups'),
        subnet_id=pulumi.get(__response__, 'subnet_id'),
        vpc=pulumi.get(__response__, 'vpc')))
