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

See Also:
    `AWS developer guide for SageMaker
    <https://docs.aws.amazon.com/sagemaker/latest/dg/whatis.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__ = [
    "Endpoint",
    "EndpointProperties",
    "EndpointConfig",
    "EndpointConfigProperties",
    "Model",
    "ModelProperties",
    "NotebookInstance",
    "NotebookInstanceProperties",
    "NotebookInstanceLifecycleConfig",
    "NotebookInstanceLifecycleConfigProperties",
]


@attrs(**ATTRSCONFIG)
class EndpointProperties(ResourceProperties):
    EndpointConfigName = attrib(default=None)
    EndpointName = attrib(default=None)
    Tags = attrib(default=None)


@attrs(**ATTRSCONFIG)
class Endpoint(Resource):
    """A Endpoint for SageMaker.

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

    RESOURCE_TYPE = "AWS::SageMaker::Endpoint"

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


@attrs(**ATTRSCONFIG)
class EndpointConfigProperties(ResourceProperties):
    EndpointConfigName = attrib(default=None)
    KmsKeyId = attrib(default=None)
    ProductionVariants = attrib(default=None)
    Tags = attrib(default=None)


@attrs(**ATTRSCONFIG)
class EndpointConfig(Resource):
    """A Endpoint Config for SageMaker.

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

    RESOURCE_TYPE = "AWS::SageMaker::EndpointConfig"

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


@attrs(**ATTRSCONFIG)
class ModelProperties(ResourceProperties):
    Containers = attrib(default=None)
    ExecutionRoleArn = attrib(default=None)
    ModelName = attrib(default=None)
    PrimaryContainer = attrib(default=None)
    Tags = attrib(default=None)
    VpcConfig = attrib(default=None)


@attrs(**ATTRSCONFIG)
class Model(Resource):
    """A Model for SageMaker.

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

    RESOURCE_TYPE = "AWS::SageMaker::Model"

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


@attrs(**ATTRSCONFIG)
class NotebookInstanceProperties(ResourceProperties):
    DirectInternetAccess = attrib(default=None)
    InstanceType = attrib(default=None)
    KmsKeyId = attrib(default=None)
    LifecycleConfigName = attrib(default=None)
    NotebookInstanceName = attrib(default=None)
    RoleArn = attrib(default=None)
    SecurityGroupIds = attrib(default=None)
    SubnetId = attrib(default=None)
    Tags = attrib(default=None)
    VolumeSizeInGB = attrib(default=None)


@attrs(**ATTRSCONFIG)
class NotebookInstance(Resource):
    """A Notebook Instance for SageMaker.

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

    RESOURCE_TYPE = "AWS::SageMaker::NotebookInstance"

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


@attrs(**ATTRSCONFIG)
class NotebookInstanceLifecycleConfigProperties(ResourceProperties):
    NotebookInstanceLifecycleConfigName = attrib(default=None)
    OnCreate = attrib(default=None)
    OnStart = attrib(default=None)


@attrs(**ATTRSCONFIG)
class NotebookInstanceLifecycleConfig(Resource):
    """A Notebook Instance Lifecycle Config for SageMaker.

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

    RESOURCE_TYPE = "AWS::SageMaker::NotebookInstanceLifecycleConfig"

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