# coding: utf-8

"""
    external/v1/external_session_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
"""


import pprint
import re  # noqa: F401

import six

from grid.openapi.configuration import Configuration


class V1AWSClusterDriverSpec(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',
        'builder_node_instance_type': 'str',
        'enable_dns_firewall': 'bool',
        'external_id': 'str',
        'guardduty_integration': 'bool',
        'instance_types': 'list[V1InstanceSpec]',
        'internal_gc_ttl': 'str',
        'internal_test_cluster': 'bool',
        'kubernetes_version': 'str',
        'management_node_instance_type': 'str',
        'original_cluster_name': 'str',
        'region': 'str',
        'role_arn': 'str',
        'tensorboard_node_instance_type': 'str',
        'x_multi_az_count': 'int'
    }

    attribute_map = {
        'bucket_name': 'bucketName',
        'builder_node_instance_type': 'builderNodeInstanceType',
        'enable_dns_firewall': 'enableDnsFirewall',
        'external_id': 'externalId',
        'guardduty_integration': 'guarddutyIntegration',
        'instance_types': 'instanceTypes',
        'internal_gc_ttl': 'internalGcTtl',
        'internal_test_cluster': 'internalTestCluster',
        'kubernetes_version': 'kubernetesVersion',
        'management_node_instance_type': 'managementNodeInstanceType',
        'original_cluster_name': 'originalClusterName',
        'region': 'region',
        'role_arn': 'roleArn',
        'tensorboard_node_instance_type': 'tensorboardNodeInstanceType',
        'x_multi_az_count': 'xMultiAzCount'
    }

    def __init__(self, bucket_name=None, builder_node_instance_type=None, enable_dns_firewall=None, external_id=None, guardduty_integration=None, instance_types=None, internal_gc_ttl=None, internal_test_cluster=None, kubernetes_version=None, management_node_instance_type=None, original_cluster_name=None, region=None, role_arn=None, tensorboard_node_instance_type=None, x_multi_az_count=None, _configuration=None):  # noqa: E501
        """V1AWSClusterDriverSpec - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._bucket_name = None
        self._builder_node_instance_type = None
        self._enable_dns_firewall = None
        self._external_id = None
        self._guardduty_integration = None
        self._instance_types = None
        self._internal_gc_ttl = None
        self._internal_test_cluster = None
        self._kubernetes_version = None
        self._management_node_instance_type = None
        self._original_cluster_name = None
        self._region = None
        self._role_arn = None
        self._tensorboard_node_instance_type = None
        self._x_multi_az_count = None
        self.discriminator = None

        if bucket_name is not None:
            self.bucket_name = bucket_name
        if builder_node_instance_type is not None:
            self.builder_node_instance_type = builder_node_instance_type
        if enable_dns_firewall is not None:
            self.enable_dns_firewall = enable_dns_firewall
        if external_id is not None:
            self.external_id = external_id
        if guardduty_integration is not None:
            self.guardduty_integration = guardduty_integration
        if instance_types is not None:
            self.instance_types = instance_types
        if internal_gc_ttl is not None:
            self.internal_gc_ttl = internal_gc_ttl
        if internal_test_cluster is not None:
            self.internal_test_cluster = internal_test_cluster
        if kubernetes_version is not None:
            self.kubernetes_version = kubernetes_version
        if management_node_instance_type is not None:
            self.management_node_instance_type = management_node_instance_type
        if original_cluster_name is not None:
            self.original_cluster_name = original_cluster_name
        if region is not None:
            self.region = region
        if role_arn is not None:
            self.role_arn = role_arn
        if tensorboard_node_instance_type is not None:
            self.tensorboard_node_instance_type = tensorboard_node_instance_type
        if x_multi_az_count is not None:
            self.x_multi_az_count = x_multi_az_count

    @property
    def bucket_name(self):
        """Gets the bucket_name of this V1AWSClusterDriverSpec.  # noqa: E501


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

    @bucket_name.setter
    def bucket_name(self, bucket_name):
        """Sets the bucket_name of this V1AWSClusterDriverSpec.


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

        self._bucket_name = bucket_name

    @property
    def builder_node_instance_type(self):
        """Gets the builder_node_instance_type of this V1AWSClusterDriverSpec.  # noqa: E501


        :return: The builder_node_instance_type of this V1AWSClusterDriverSpec.  # noqa: E501
        :rtype: str
        """
        return self._builder_node_instance_type

    @builder_node_instance_type.setter
    def builder_node_instance_type(self, builder_node_instance_type):
        """Sets the builder_node_instance_type of this V1AWSClusterDriverSpec.


        :param builder_node_instance_type: The builder_node_instance_type of this V1AWSClusterDriverSpec.  # noqa: E501
        :type: str
        """

        self._builder_node_instance_type = builder_node_instance_type

    @property
    def enable_dns_firewall(self):
        """Gets the enable_dns_firewall of this V1AWSClusterDriverSpec.  # noqa: E501


        :return: The enable_dns_firewall of this V1AWSClusterDriverSpec.  # noqa: E501
        :rtype: bool
        """
        return self._enable_dns_firewall

    @enable_dns_firewall.setter
    def enable_dns_firewall(self, enable_dns_firewall):
        """Sets the enable_dns_firewall of this V1AWSClusterDriverSpec.


        :param enable_dns_firewall: The enable_dns_firewall of this V1AWSClusterDriverSpec.  # noqa: E501
        :type: bool
        """

        self._enable_dns_firewall = enable_dns_firewall

    @property
    def external_id(self):
        """Gets the external_id of this V1AWSClusterDriverSpec.  # noqa: E501


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

    @external_id.setter
    def external_id(self, external_id):
        """Sets the external_id of this V1AWSClusterDriverSpec.


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

        self._external_id = external_id

    @property
    def guardduty_integration(self):
        """Gets the guardduty_integration of this V1AWSClusterDriverSpec.  # noqa: E501


        :return: The guardduty_integration of this V1AWSClusterDriverSpec.  # noqa: E501
        :rtype: bool
        """
        return self._guardduty_integration

    @guardduty_integration.setter
    def guardduty_integration(self, guardduty_integration):
        """Sets the guardduty_integration of this V1AWSClusterDriverSpec.


        :param guardduty_integration: The guardduty_integration of this V1AWSClusterDriverSpec.  # noqa: E501
        :type: bool
        """

        self._guardduty_integration = guardduty_integration

    @property
    def instance_types(self):
        """Gets the instance_types of this V1AWSClusterDriverSpec.  # noqa: E501


        :return: The instance_types of this V1AWSClusterDriverSpec.  # noqa: E501
        :rtype: list[V1InstanceSpec]
        """
        return self._instance_types

    @instance_types.setter
    def instance_types(self, instance_types):
        """Sets the instance_types of this V1AWSClusterDriverSpec.


        :param instance_types: The instance_types of this V1AWSClusterDriverSpec.  # noqa: E501
        :type: list[V1InstanceSpec]
        """

        self._instance_types = instance_types

    @property
    def internal_gc_ttl(self):
        """Gets the internal_gc_ttl of this V1AWSClusterDriverSpec.  # noqa: E501


        :return: The internal_gc_ttl of this V1AWSClusterDriverSpec.  # noqa: E501
        :rtype: str
        """
        return self._internal_gc_ttl

    @internal_gc_ttl.setter
    def internal_gc_ttl(self, internal_gc_ttl):
        """Sets the internal_gc_ttl of this V1AWSClusterDriverSpec.


        :param internal_gc_ttl: The internal_gc_ttl of this V1AWSClusterDriverSpec.  # noqa: E501
        :type: str
        """

        self._internal_gc_ttl = internal_gc_ttl

    @property
    def internal_test_cluster(self):
        """Gets the internal_test_cluster of this V1AWSClusterDriverSpec.  # noqa: E501


        :return: The internal_test_cluster of this V1AWSClusterDriverSpec.  # noqa: E501
        :rtype: bool
        """
        return self._internal_test_cluster

    @internal_test_cluster.setter
    def internal_test_cluster(self, internal_test_cluster):
        """Sets the internal_test_cluster of this V1AWSClusterDriverSpec.


        :param internal_test_cluster: The internal_test_cluster of this V1AWSClusterDriverSpec.  # noqa: E501
        :type: bool
        """

        self._internal_test_cluster = internal_test_cluster

    @property
    def kubernetes_version(self):
        """Gets the kubernetes_version of this V1AWSClusterDriverSpec.  # noqa: E501


        :return: The kubernetes_version of this V1AWSClusterDriverSpec.  # noqa: E501
        :rtype: str
        """
        return self._kubernetes_version

    @kubernetes_version.setter
    def kubernetes_version(self, kubernetes_version):
        """Sets the kubernetes_version of this V1AWSClusterDriverSpec.


        :param kubernetes_version: The kubernetes_version of this V1AWSClusterDriverSpec.  # noqa: E501
        :type: str
        """

        self._kubernetes_version = kubernetes_version

    @property
    def management_node_instance_type(self):
        """Gets the management_node_instance_type of this V1AWSClusterDriverSpec.  # noqa: E501


        :return: The management_node_instance_type of this V1AWSClusterDriverSpec.  # noqa: E501
        :rtype: str
        """
        return self._management_node_instance_type

    @management_node_instance_type.setter
    def management_node_instance_type(self, management_node_instance_type):
        """Sets the management_node_instance_type of this V1AWSClusterDriverSpec.


        :param management_node_instance_type: The management_node_instance_type of this V1AWSClusterDriverSpec.  # noqa: E501
        :type: str
        """

        self._management_node_instance_type = management_node_instance_type

    @property
    def original_cluster_name(self):
        """Gets the original_cluster_name of this V1AWSClusterDriverSpec.  # noqa: E501


        :return: The original_cluster_name of this V1AWSClusterDriverSpec.  # noqa: E501
        :rtype: str
        """
        return self._original_cluster_name

    @original_cluster_name.setter
    def original_cluster_name(self, original_cluster_name):
        """Sets the original_cluster_name of this V1AWSClusterDriverSpec.


        :param original_cluster_name: The original_cluster_name of this V1AWSClusterDriverSpec.  # noqa: E501
        :type: str
        """

        self._original_cluster_name = original_cluster_name

    @property
    def region(self):
        """Gets the region of this V1AWSClusterDriverSpec.  # noqa: E501


        :return: The region of this V1AWSClusterDriverSpec.  # noqa: E501
        :rtype: str
        """
        return self._region

    @region.setter
    def region(self, region):
        """Sets the region of this V1AWSClusterDriverSpec.


        :param region: The region of this V1AWSClusterDriverSpec.  # noqa: E501
        :type: str
        """

        self._region = region

    @property
    def role_arn(self):
        """Gets the role_arn of this V1AWSClusterDriverSpec.  # noqa: E501


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

    @role_arn.setter
    def role_arn(self, role_arn):
        """Sets the role_arn of this V1AWSClusterDriverSpec.


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

        self._role_arn = role_arn

    @property
    def tensorboard_node_instance_type(self):
        """Gets the tensorboard_node_instance_type of this V1AWSClusterDriverSpec.  # noqa: E501


        :return: The tensorboard_node_instance_type of this V1AWSClusterDriverSpec.  # noqa: E501
        :rtype: str
        """
        return self._tensorboard_node_instance_type

    @tensorboard_node_instance_type.setter
    def tensorboard_node_instance_type(self, tensorboard_node_instance_type):
        """Sets the tensorboard_node_instance_type of this V1AWSClusterDriverSpec.


        :param tensorboard_node_instance_type: The tensorboard_node_instance_type of this V1AWSClusterDriverSpec.  # noqa: E501
        :type: str
        """

        self._tensorboard_node_instance_type = tensorboard_node_instance_type

    @property
    def x_multi_az_count(self):
        """Gets the x_multi_az_count of this V1AWSClusterDriverSpec.  # noqa: E501


        :return: The x_multi_az_count of this V1AWSClusterDriverSpec.  # noqa: E501
        :rtype: int
        """
        return self._x_multi_az_count

    @x_multi_az_count.setter
    def x_multi_az_count(self, x_multi_az_count):
        """Sets the x_multi_az_count of this V1AWSClusterDriverSpec.


        :param x_multi_az_count: The x_multi_az_count of this V1AWSClusterDriverSpec.  # noqa: E501
        :type: int
        """

        self._x_multi_az_count = x_multi_az_count

    def to_dict(self):
        """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(V1AWSClusterDriverSpec, dict):
            for key, value in self.items():
                result[key] = value

        return result

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

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

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, V1AWSClusterDriverSpec):
            return False

        return self.to_dict() == other.to_dict()

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        if not isinstance(other, V1AWSClusterDriverSpec):
            return True

        return self.to_dict() != other.to_dict()
