# 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__ = [
    'GetAppSecEvalHostnamesResult',
    'AwaitableGetAppSecEvalHostnamesResult',
    'get_app_sec_eval_hostnames',
]

@pulumi.output_type
class GetAppSecEvalHostnamesResult:
    """
    A collection of values returned by getAppSecEvalHostnames.
    """
    def __init__(__self__, config_id=None, hostnames=None, id=None, json=None, output_text=None):
        if config_id and not isinstance(config_id, int):
            raise TypeError("Expected argument 'config_id' to be a int")
        pulumi.set(__self__, "config_id", config_id)
        if hostnames and not isinstance(hostnames, list):
            raise TypeError("Expected argument 'hostnames' to be a list")
        pulumi.set(__self__, "hostnames", hostnames)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if json and not isinstance(json, str):
            raise TypeError("Expected argument 'json' to be a str")
        pulumi.set(__self__, "json", json)
        if output_text and not isinstance(output_text, str):
            raise TypeError("Expected argument 'output_text' to be a str")
        pulumi.set(__self__, "output_text", output_text)

    @property
    @pulumi.getter(name="configId")
    def config_id(self) -> int:
        return pulumi.get(self, "config_id")

    @property
    @pulumi.getter
    def hostnames(self) -> Sequence[str]:
        """
        A list of the evaluation hostnames.
        """
        return pulumi.get(self, "hostnames")

    @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 json(self) -> str:
        """
        A JSON-formatted list of the evaluation hostnames.
        """
        return pulumi.get(self, "json")

    @property
    @pulumi.getter(name="outputText")
    def output_text(self) -> str:
        """
        A tabular display showing the evaluation hostnames.
        """
        return pulumi.get(self, "output_text")


class AwaitableGetAppSecEvalHostnamesResult(GetAppSecEvalHostnamesResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetAppSecEvalHostnamesResult(
            config_id=self.config_id,
            hostnames=self.hostnames,
            id=self.id,
            json=self.json,
            output_text=self.output_text)


def get_app_sec_eval_hostnames(config_id: Optional[int] = None,
                               opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetAppSecEvalHostnamesResult:
    """
    Use the `AppSecEvalHostnames` data source to retrieve the evaluation hostnames for a configuration. Evaluation mode for hostnames is only available for Web Application Protector. Run hostnames in evaluation mode to see how your configuration settings protect traffic for that hostname before adding a hostname directly to a live configuration. An evaluation period lasts four weeks unless you stop the evaluation. Once you begin, the hostnames you evaluate start responding to traffic as if they are your current hostnames. However, instead of taking an action the evaluation hostnames log which action they would have taken if they were your actively-protected hostnames and not a test.

    ## Example Usage

    Basic usage:

    ```python
    import pulumi
    import pulumi_akamai as akamai

    configuration = akamai.get_app_sec_configuration(name=var["security_configuration"])
    eval_hostnames_app_sec_eval_hostnames = akamai.get_app_sec_eval_hostnames(config_id=configuration.config_id)
    pulumi.export("evalHostnames", eval_hostnames_app_sec_eval_hostnames.hostnames)
    pulumi.export("evalHostnamesOutput", eval_hostnames_app_sec_eval_hostnames.output_text)
    pulumi.export("evalHostnamesJson", eval_hostnames_app_sec_eval_hostnames.json)
    ```


    :param int config_id: The ID of the security configuration to use.
    """
    __args__ = dict()
    __args__['configId'] = config_id
    if opts is None:
        opts = pulumi.InvokeOptions()
    if opts.version is None:
        opts.version = _utilities.get_version()
    __ret__ = pulumi.runtime.invoke('akamai:index/getAppSecEvalHostnames:getAppSecEvalHostnames', __args__, opts=opts, typ=GetAppSecEvalHostnamesResult).value

    return AwaitableGetAppSecEvalHostnamesResult(
        config_id=__ret__.config_id,
        hostnames=__ret__.hostnames,
        id=__ret__.id,
        json=__ret__.json,
        output_text=__ret__.output_text)
