# coding: utf-8

"""
    external/v1/auth_service.proto

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

    OpenAPI spec version: version not set
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git

    NOTE
    ----
    standard swagger-codegen-cli for this python client has been modified
    by custom templates. The purpose of these templates is to include
    typing information in the API and Model code. Please refer to the
    main grid repository for more info
"""

import pprint
import re  # noqa: F401

from typing import TYPE_CHECKING

import six

if TYPE_CHECKING:
    from datetime import datetime
    from lightning_cloud.openapi.models import *

class V1AWSDirectV1(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """
    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'bucket_name': 'str',
        'external_id': 'str',
        'primary_region': 'str',
        'regions': 'list[str]',
        'role_arn': 'str',
        'source_cidr_ips': 'list[str]'
    }

    attribute_map = {
        'bucket_name': 'bucketName',
        'external_id': 'externalId',
        'primary_region': 'primaryRegion',
        'regions': 'regions',
        'role_arn': 'roleArn',
        'source_cidr_ips': 'sourceCidrIps'
    }

    def __init__(self, bucket_name: 'str' =None, external_id: 'str' =None, primary_region: 'str' =None, regions: 'list[str]' =None, role_arn: 'str' =None, source_cidr_ips: 'list[str]' =None):  # noqa: E501
        """V1AWSDirectV1 - a model defined in Swagger"""  # noqa: E501
        self._bucket_name = None
        self._external_id = None
        self._primary_region = None
        self._regions = None
        self._role_arn = None
        self._source_cidr_ips = None
        self.discriminator = None
        if bucket_name is not None:
            self.bucket_name = bucket_name
        if external_id is not None:
            self.external_id = external_id
        if primary_region is not None:
            self.primary_region = primary_region
        if regions is not None:
            self.regions = regions
        if role_arn is not None:
            self.role_arn = role_arn
        if source_cidr_ips is not None:
            self.source_cidr_ips = source_cidr_ips

    @property
    def bucket_name(self) -> 'str':
        """Gets the bucket_name of this V1AWSDirectV1.  # noqa: E501


        :return: The bucket_name of this V1AWSDirectV1.  # noqa: E501
        :rtype: str
        """
        return self._bucket_name

    @bucket_name.setter
    def bucket_name(self, bucket_name: 'str'):
        """Sets the bucket_name of this V1AWSDirectV1.


        :param bucket_name: The bucket_name of this V1AWSDirectV1.  # noqa: E501
        :type: str
        """

        self._bucket_name = bucket_name

    @property
    def external_id(self) -> 'str':
        """Gets the external_id of this V1AWSDirectV1.  # noqa: E501


        :return: The external_id of this V1AWSDirectV1.  # noqa: E501
        :rtype: str
        """
        return self._external_id

    @external_id.setter
    def external_id(self, external_id: 'str'):
        """Sets the external_id of this V1AWSDirectV1.


        :param external_id: The external_id of this V1AWSDirectV1.  # noqa: E501
        :type: str
        """

        self._external_id = external_id

    @property
    def primary_region(self) -> 'str':
        """Gets the primary_region of this V1AWSDirectV1.  # noqa: E501


        :return: The primary_region of this V1AWSDirectV1.  # noqa: E501
        :rtype: str
        """
        return self._primary_region

    @primary_region.setter
    def primary_region(self, primary_region: 'str'):
        """Sets the primary_region of this V1AWSDirectV1.


        :param primary_region: The primary_region of this V1AWSDirectV1.  # noqa: E501
        :type: str
        """

        self._primary_region = primary_region

    @property
    def regions(self) -> 'list[str]':
        """Gets the regions of this V1AWSDirectV1.  # noqa: E501


        :return: The regions of this V1AWSDirectV1.  # noqa: E501
        :rtype: list[str]
        """
        return self._regions

    @regions.setter
    def regions(self, regions: 'list[str]'):
        """Sets the regions of this V1AWSDirectV1.


        :param regions: The regions of this V1AWSDirectV1.  # noqa: E501
        :type: list[str]
        """

        self._regions = regions

    @property
    def role_arn(self) -> 'str':
        """Gets the role_arn of this V1AWSDirectV1.  # noqa: E501


        :return: The role_arn of this V1AWSDirectV1.  # noqa: E501
        :rtype: str
        """
        return self._role_arn

    @role_arn.setter
    def role_arn(self, role_arn: 'str'):
        """Sets the role_arn of this V1AWSDirectV1.


        :param role_arn: The role_arn of this V1AWSDirectV1.  # noqa: E501
        :type: str
        """

        self._role_arn = role_arn

    @property
    def source_cidr_ips(self) -> 'list[str]':
        """Gets the source_cidr_ips of this V1AWSDirectV1.  # noqa: E501

        source_cidr_ips allows modifying default 0.0.0.0/0 source, so that it can only allow specific incoming traffic into the EC2 machines. This should always include controlplane's IP address, otherwise it will not work.  # noqa: E501

        :return: The source_cidr_ips of this V1AWSDirectV1.  # noqa: E501
        :rtype: list[str]
        """
        return self._source_cidr_ips

    @source_cidr_ips.setter
    def source_cidr_ips(self, source_cidr_ips: 'list[str]'):
        """Sets the source_cidr_ips of this V1AWSDirectV1.

        source_cidr_ips allows modifying default 0.0.0.0/0 source, so that it can only allow specific incoming traffic into the EC2 machines. This should always include controlplane's IP address, otherwise it will not work.  # noqa: E501

        :param source_cidr_ips: The source_cidr_ips of this V1AWSDirectV1.  # noqa: E501
        :type: list[str]
        """

        self._source_cidr_ips = source_cidr_ips

    def to_dict(self) -> dict:
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value
        if issubclass(V1AWSDirectV1, dict):
            for key, value in self.items():
                result[key] = value

        return result

    def to_str(self) -> str:
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self) -> str:
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other: 'V1AWSDirectV1') -> bool:
        """Returns true if both objects are equal"""
        if not isinstance(other, V1AWSDirectV1):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other: 'V1AWSDirectV1') -> bool:
        """Returns true if both objects are not equal"""
        return not self == other
