"""Raw representations of every data type in the AWS Route53 service.

See Also:
    `AWS developer guide for Route53
    <https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/index.html>`_

This file is automatically generated, and should not be directly edited.
"""

from attr import attrib
from attr import attrs

from ..core import ATTRSCONFIG
from ..core import Resource
from ..core import ResourceProperties
from ..core import create_object_converter

__all__ = [
    "HealthCheck",
    "HealthCheckProperties",
    "HostedZone",
    "HostedZoneProperties",
    "RecordSet",
    "RecordSetProperties",
    "RecordSetGroup",
    "RecordSetGroupProperties",
]


@attrs(**ATTRSCONFIG)
class HealthCheckProperties(ResourceProperties):
    HealthCheckConfig = attrib(default=None)
    HealthCheckTags = attrib(default=None)


@attrs(**ATTRSCONFIG)
class HealthCheck(Resource):
    """A Health Check for Route53.

    See Also:
        `AWS Cloud Formation documentation for HealthCheck
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-healthcheck.html>`_
    """

    RESOURCE_TYPE = "AWS::Route53::HealthCheck"

    Properties: HealthCheckProperties = attrib(
        factory=HealthCheckProperties,
        converter=create_object_converter(HealthCheckProperties),
    )


@attrs(**ATTRSCONFIG)
class HostedZoneProperties(ResourceProperties):
    HostedZoneConfig = attrib(default=None)
    HostedZoneTags = attrib(default=None)
    Name = attrib(default=None)
    QueryLoggingConfig = attrib(default=None)
    VPCs = attrib(default=None)


@attrs(**ATTRSCONFIG)
class HostedZone(Resource):
    """A Hosted Zone for Route53.

    See Also:
        `AWS Cloud Formation documentation for HostedZone
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-hostedzone.html>`_
    """

    RESOURCE_TYPE = "AWS::Route53::HostedZone"

    Properties: HostedZoneProperties = attrib(
        factory=HostedZoneProperties,
        converter=create_object_converter(HostedZoneProperties),
    )


@attrs(**ATTRSCONFIG)
class RecordSetProperties(ResourceProperties):
    AliasTarget = attrib(default=None)
    Comment = attrib(default=None)
    Failover = attrib(default=None)
    GeoLocation = attrib(default=None)
    HealthCheckId = attrib(default=None)
    HostedZoneId = attrib(default=None)
    HostedZoneName = attrib(default=None)
    MultiValueAnswer = attrib(default=None)
    Name = attrib(default=None)
    Region = attrib(default=None)
    ResourceRecords = attrib(default=None)
    SetIdentifier = attrib(default=None)
    TTL = attrib(default=None)
    Type = attrib(default=None)
    Weight = attrib(default=None)


@attrs(**ATTRSCONFIG)
class RecordSet(Resource):
    """A Record Set for Route53.

    See Also:
        `AWS Cloud Formation documentation for RecordSet
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-route53-recordset.html>`_
    """

    RESOURCE_TYPE = "AWS::Route53::RecordSet"

    Properties: RecordSetProperties = attrib(
        factory=RecordSetProperties,
        converter=create_object_converter(RecordSetProperties),
    )


@attrs(**ATTRSCONFIG)
class RecordSetGroupProperties(ResourceProperties):
    Comment = attrib(default=None)
    HostedZoneId = attrib(default=None)
    HostedZoneName = attrib(default=None)
    RecordSets = attrib(default=None)


@attrs(**ATTRSCONFIG)
class RecordSetGroup(Resource):
    """A Record Set Group for Route53.

    See Also:
        `AWS Cloud Formation documentation for RecordSetGroup
        <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-route53-recordsetgroup.html>`_
    """

    RESOURCE_TYPE = "AWS::Route53::RecordSetGroup"

    Properties: RecordSetGroupProperties = attrib(
        factory=RecordSetGroupProperties,
        converter=create_object_converter(RecordSetGroupProperties),
    )
