text: # coding: utf-8
  
  """
      Cloudbreak API
  
      Cloudbreak is a powerful left surf that breaks over a coral reef, a mile off southwest the island of Tavarua, Fiji. Cloudbreak is a cloud agnostic Hadoop as a Service API. Abstracts the provisioning and ease management and monitoring of on-demand clusters. SequenceIQ's Cloudbreak is a RESTful application development platform with the goal of helping developers to build solutions for deploying Hadoop YARN clusters in different environments. Once it is deployed in your favourite servlet container it exposes a REST API allowing to span up Hadoop clusters of arbitary sizes and cloud providers. Provisioning Hadoop has never been easier. Cloudbreak is built on the foundation of cloud providers API (Amazon AWS, Microsoft Azure, Google Cloud Platform, Openstack), Apache Ambari, Docker lightweight containers, Swarm and Consul. For further product documentation follow the link: <a href=\"http://hortonworks.com/apache/cloudbreak/\">http://hortonworks.com/apache/cloudbreak/</a>
  
      OpenAPI spec version: 2.9.0
      
      Generated by: https://github.com/swagger-api/swagger-codegen.git
  """
  
  
  from pprint import pformat
  from six import iteritems
  import re
  
  
  class InstanceGroupResponse(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 = {
          'template_id': 'int',
          'security_group_id': 'int',
          'node_count': 'int',
          'group': 'str',
          'type': 'str',
          'parameters': 'dict(str, object)',
          'template': 'TemplateResponse',
          'security_group': 'SecurityGroupResponse',
          'id': 'int',
          'metadata': 'list[InstanceMetaData]'
      }
  
      attribute_map = {
          'template_id': 'templateId',
          'security_group_id': 'securityGroupId',
          'node_count': 'nodeCount',
          'group': 'group',
          'type': 'type',
          'parameters': 'parameters',
          'template': 'template',
          'security_group': 'securityGroup',
          'id': 'id',
          'metadata': 'metadata'
      }
  
      def __init__(self, template_id=None, security_group_id=None, node_count=None, group=None, type=None, parameters=None, template=None, security_group=None, id=None, metadata=None):
          """
          InstanceGroupResponse - a model defined in Swagger
          """
  
          self._template_id = None
          self._security_group_id = None
          self._node_count = None
          self._group = None
          self._type = None
          self._parameters = None
          self._template = None
          self._security_group = None
          self._id = None
          self._metadata = None
  
          if template_id is not None:
            self.template_id = template_id
          if security_group_id is not None:
            self.security_group_id = security_group_id
          self.node_count = node_count
          self.group = group
          if type is not None:
            self.type = type
          if parameters is not None:
            self.parameters = parameters
          if template is not None:
            self.template = template
          if security_group is not None:
            self.security_group = security_group
          if id is not None:
            self.id = id
          if metadata is not None:
            self.metadata = metadata
  
      @property
      def template_id(self):
          """
          Gets the template_id of this InstanceGroupResponse.
          referenced template id
  
          :return: The template_id of this InstanceGroupResponse.
          :rtype: int
          """
          return self._template_id
  
      @template_id.setter
      def template_id(self, template_id):
          """
          Sets the template_id of this InstanceGroupResponse.
          referenced template id
  
          :param template_id: The template_id of this InstanceGroupResponse.
          :type: int
          """
  
          self._template_id = template_id
  
      @property
      def security_group_id(self):
          """
          Gets the security_group_id of this InstanceGroupResponse.
          security group resource id for the instance group
  
          :return: The security_group_id of this InstanceGroupResponse.
          :rtype: int
          """
          return self._security_group_id
  
      @security_group_id.setter
      def security_group_id(self, security_group_id):
          """
          Sets the security_group_id of this InstanceGroupResponse.
          security group resource id for the instance group
  
          :param security_group_id: The security_group_id of this InstanceGroupResponse.
          :type: int
          """
  
          self._security_group_id = security_group_id
  
      @property
      def node_count(self):
          """
          Gets the node_count of this InstanceGroupResponse.
          number of nodes
  
          :return: The node_count of this InstanceGroupResponse.
          :rtype: int
          """
          return self._node_count
  
      @node_count.setter
      def node_count(self, node_count):
          """
          Sets the node_count of this InstanceGroupResponse.
          number of nodes
  
          :param node_count: The node_count of this InstanceGroupResponse.
          :type: int
          """
          if node_count is None:
              raise ValueError("Invalid value for `node_count`, must not be `None`")
          if node_count is not None and node_count > 100000:
              raise ValueError("Invalid value for `node_count`, must be a value less than or equal to `100000`")
          if node_count is not None and node_count < 0:
              raise ValueError("Invalid value for `node_count`, must be a value greater than or equal to `0`")
  
          self._node_count = node_count
  
      @property
      def group(self):
          """
          Gets the group of this InstanceGroupResponse.
          name of the instance group
  
          :return: The group of this InstanceGroupResponse.
          :rtype: str
          """
          return self._group
  
      @group.setter
      def group(self, group):
          """
          Sets the group of this InstanceGroupResponse.
          name of the instance group
  
          :param group: The group of this InstanceGroupResponse.
          :type: str
          """
          if group is None:
              raise ValueError("Invalid value for `group`, must not be `None`")
  
          self._group = group
  
      @property
      def type(self):
          """
          Gets the type of this InstanceGroupResponse.
          type of the instance group
  
          :return: The type of this InstanceGroupResponse.
          :rtype: str
          """
          return self._type
  
      @type.setter
      def type(self, type):
          """
          Sets the type of this InstanceGroupResponse.
          type of the instance group
  
          :param type: The type of this InstanceGroupResponse.
          :type: str
          """
          allowed_values = ["GATEWAY", "CORE"]
          if type not in allowed_values:
              raise ValueError(
                  "Invalid value for `type` ({0}), must be one of {1}"
                  .format(type, allowed_values)
              )
  
          self._type = type
  
      @property
      def parameters(self):
          """
          Gets the parameters of this InstanceGroupResponse.
          cloud specific parameters for instance group
  
          :return: The parameters of this InstanceGroupResponse.
          :rtype: dict(str, object)
          """
          return self._parameters
  
      @parameters.setter
      def parameters(self, parameters):
          """
          Sets the parameters of this InstanceGroupResponse.
          cloud specific parameters for instance group
  
          :param parameters: The parameters of this InstanceGroupResponse.
          :type: dict(str, object)
          """
  
          self._parameters = parameters
  
      @property
      def template(self):
          """
          Gets the template of this InstanceGroupResponse.
          instancegroup related template
  
          :return: The template of this InstanceGroupResponse.
          :rtype: TemplateResponse
          """
          return self._template
  
      @template.setter
      def template(self, template):
          """
          Sets the template of this InstanceGroupResponse.
          instancegroup related template
  
          :param template: The template of this InstanceGroupResponse.
          :type: TemplateResponse
          """
  
          self._template = template
  
      @property
      def security_group(self):
          """
          Gets the security_group of this InstanceGroupResponse.
          instancegroup related securitygroup
  
          :return: The security_group of this InstanceGroupResponse.
          :rtype: SecurityGroupResponse
          """
          return self._security_group
  
      @security_group.setter
      def security_group(self, security_group):
          """
          Sets the security_group of this InstanceGroupResponse.
          instancegroup related securitygroup
  
          :param security_group: The security_group of this InstanceGroupResponse.
          :type: SecurityGroupResponse
          """
  
          self._security_group = security_group
  
      @property
      def id(self):
          """
          Gets the id of this InstanceGroupResponse.
          id of the resource
  
          :return: The id of this InstanceGroupResponse.
          :rtype: int
          """
          return self._id
  
      @id.setter
      def id(self, id):
          """
          Sets the id of this InstanceGroupResponse.
          id of the resource
  
          :param id: The id of this InstanceGroupResponse.
          :type: int
          """
  
          self._id = id
  
      @property
      def metadata(self):
          """
          Gets the metadata of this InstanceGroupResponse.
          metadata of instances
  
          :return: The metadata of this InstanceGroupResponse.
          :rtype: list[InstanceMetaData]
          """
          return self._metadata
  
      @metadata.setter
      def metadata(self, metadata):
          """
          Sets the metadata of this InstanceGroupResponse.
          metadata of instances
  
          :param metadata: The metadata of this InstanceGroupResponse.
          :type: list[InstanceMetaData]
          """
  
          self._metadata = metadata
  
      def to_dict(self):
          """
          Returns the model properties as a dict
          """
          result = {}
  
          for attr, _ in 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
  
          return result
  
      def to_str(self):
          """
          Returns the string representation of the model
          """
          return 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, InstanceGroupResponse):
              return False
  
          return self.__dict__ == other.__dict__
  
      def __ne__(self, other):
          """
          Returns true if both objects are not equal
          """
          return not self == other
  