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

See Also:
    `AWS developer guide for AmazonMQ
    <https://docs.aws.amazon.com/amazon-mq/latest/developer-guide/welcome.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__ = [
    "Broker",
    "BrokerProperties",
    "Configuration",
    "ConfigurationProperties",
    "ConfigurationAssociation",
    "ConfigurationAssociationProperties",
]


@attrs(**ATTRSCONFIG)
class BrokerProperties(ResourceProperties):
    AutoMinorVersionUpgrade = attrib(default=None)
    BrokerName = attrib(default=None)
    Configuration = attrib(default=None)
    DeploymentMode = attrib(default=None)
    EngineType = attrib(default=None)
    EngineVersion = attrib(default=None)
    HostInstanceType = attrib(default=None)
    Logs = attrib(default=None)
    MaintenanceWindowStartTime = attrib(default=None)
    PubliclyAccessible = attrib(default=None)
    SecurityGroups = attrib(default=None)
    SubnetIds = attrib(default=None)
    Tags = attrib(default=None)
    Users = attrib(default=None)


@attrs(**ATTRSCONFIG)
class Broker(Resource):
    """A Broker for AmazonMQ.

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

    RESOURCE_TYPE = "AWS::AmazonMQ::Broker"

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


@attrs(**ATTRSCONFIG)
class ConfigurationProperties(ResourceProperties):
    Data = attrib(default=None)
    Description = attrib(default=None)
    EngineType = attrib(default=None)
    EngineVersion = attrib(default=None)
    Name = attrib(default=None)
    Tags = attrib(default=None)


@attrs(**ATTRSCONFIG)
class Configuration(Resource):
    """A Configuration for AmazonMQ.

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

    RESOURCE_TYPE = "AWS::AmazonMQ::Configuration"

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


@attrs(**ATTRSCONFIG)
class ConfigurationAssociationProperties(ResourceProperties):
    Broker = attrib(default=None)
    Configuration = attrib(default=None)


@attrs(**ATTRSCONFIG)
class ConfigurationAssociation(Resource):
    """A Configuration Association for AmazonMQ.

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

    RESOURCE_TYPE = "AWS::AmazonMQ::ConfigurationAssociation"

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