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

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

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

from ..core import Resource

__all__ = [
    "Cluster",
    "Service",
    "TaskDefinition",
]


class Cluster(Resource):
    """A Cluster for ECS.

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

    RESOURCE_TYPE = "AWS::ECS::Cluster"

    RESOURCE_PROPERTIES = {
        "ClusterName",
    }


class Service(Resource):
    """A Service for ECS.

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

    RESOURCE_TYPE = "AWS::ECS::Service"

    RESOURCE_PROPERTIES = {
        "Cluster",
        "DeploymentConfiguration",
        "DesiredCount",
        "HealthCheckGracePeriodSeconds",
        "LaunchType",
        "LoadBalancers",
        "NetworkConfiguration",
        "PlacementConstraints",
        "PlacementStrategies",
        "PlatformVersion",
        "Role",
        "SchedulingStrategy",
        "ServiceName",
        "ServiceRegistries",
        "TaskDefinition",
    }


class TaskDefinition(Resource):
    """A Task Definition for ECS.

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

    RESOURCE_TYPE = "AWS::ECS::TaskDefinition"

    RESOURCE_PROPERTIES = {
        "ContainerDefinitions",
        "Cpu",
        "ExecutionRoleArn",
        "Family",
        "Memory",
        "NetworkMode",
        "PlacementConstraints",
        "RequiresCompatibilities",
        "TaskRoleArn",
        "Volumes",
    }
