text: # coding: utf-8
  
  """
      Cisco Intersight OpenAPI specification.
  
      The Cisco Intersight OpenAPI specification.
  
      OpenAPI spec version: 1.0.9-1461
      
      Generated by: https://github.com/swagger-api/swagger-codegen.git
  """
  
  
  from pprint import pformat
  from six import iteritems
  import re
  
  
  class ComputeIpAddress(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 = {
          'object_type': 'str',
          'address': 'str',
          'category': 'str',
          'default_gateway': 'str',
          'dn': 'str',
          'http_port': 'int',
          'https_port': 'int',
          'kvm_port': 'int',
          'name': 'str',
          'subnet': 'str',
          'type': 'str'
      }
  
      attribute_map = {
          'object_type': 'ObjectType',
          'address': 'Address',
          'category': 'Category',
          'default_gateway': 'DefaultGateway',
          'dn': 'Dn',
          'http_port': 'HttpPort',
          'https_port': 'HttpsPort',
          'kvm_port': 'KvmPort',
          'name': 'Name',
          'subnet': 'Subnet',
          'type': 'Type'
      }
  
      def __init__(self, object_type=None, address=None, category='Equipment', default_gateway=None, dn=None, http_port=None, https_port=None, kvm_port=None, name='Outband', subnet=None, type='MgmtInterface'):
          """
          ComputeIpAddress - a model defined in Swagger
          """
  
          self._object_type = None
          self._address = None
          self._category = None
          self._default_gateway = None
          self._dn = None
          self._http_port = None
          self._https_port = None
          self._kvm_port = None
          self._name = None
          self._subnet = None
          self._type = None
  
          if object_type is not None:
            self.object_type = object_type
          if address is not None:
            self.address = address
          if category is not None:
            self.category = category
          if default_gateway is not None:
            self.default_gateway = default_gateway
          if dn is not None:
            self.dn = dn
          if http_port is not None:
            self.http_port = http_port
          if https_port is not None:
            self.https_port = https_port
          if kvm_port is not None:
            self.kvm_port = kvm_port
          if name is not None:
            self.name = name
          if subnet is not None:
            self.subnet = subnet
          if type is not None:
            self.type = type
  
      @property
      def object_type(self):
          """
          Gets the object_type of this ComputeIpAddress.
          The concrete type of this complex type. The ObjectType property must be set explicitly by API clients when the type is ambiguous. In all other cases, the  ObjectType is optional.  The type is ambiguous when a managed object contains an array of nested documents, and the documents in the array are heterogeneous, i.e. the array can contain nested documents of different types.
  
          :return: The object_type of this ComputeIpAddress.
          :rtype: str
          """
          return self._object_type
  
      @object_type.setter
      def object_type(self, object_type):
          """
          Sets the object_type of this ComputeIpAddress.
          The concrete type of this complex type. The ObjectType property must be set explicitly by API clients when the type is ambiguous. In all other cases, the  ObjectType is optional.  The type is ambiguous when a managed object contains an array of nested documents, and the documents in the array are heterogeneous, i.e. the array can contain nested documents of different types.
  
          :param object_type: The object_type of this ComputeIpAddress.
          :type: str
          """
  
          self._object_type = object_type
  
      @property
      def address(self):
          """
          Gets the address of this ComputeIpAddress.
  
          :return: The address of this ComputeIpAddress.
          :rtype: str
          """
          return self._address
  
      @address.setter
      def address(self, address):
          """
          Sets the address of this ComputeIpAddress.
  
          :param address: The address of this ComputeIpAddress.
          :type: str
          """
  
          self._address = address
  
      @property
      def category(self):
          """
          Gets the category of this ComputeIpAddress.
  
          :return: The category of this ComputeIpAddress.
          :rtype: str
          """
          return self._category
  
      @category.setter
      def category(self, category):
          """
          Sets the category of this ComputeIpAddress.
  
          :param category: The category of this ComputeIpAddress.
          :type: str
          """
          allowed_values = ["Equipment", "ServiceProfile"]
          if category not in allowed_values:
              raise ValueError(
                  "Invalid value for `category` ({0}), must be one of {1}"
                  .format(category, allowed_values)
              )
  
          self._category = category
  
      @property
      def default_gateway(self):
          """
          Gets the default_gateway of this ComputeIpAddress.
          Gateway address of the KVM IP address.
  
          :return: The default_gateway of this ComputeIpAddress.
          :rtype: str
          """
          return self._default_gateway
  
      @default_gateway.setter
      def default_gateway(self, default_gateway):
          """
          Sets the default_gateway of this ComputeIpAddress.
          Gateway address of the KVM IP address.
  
          :param default_gateway: The default_gateway of this ComputeIpAddress.
          :type: str
          """
  
          self._default_gateway = default_gateway
  
      @property
      def dn(self):
          """
          Gets the dn of this ComputeIpAddress.
  
          :return: The dn of this ComputeIpAddress.
          :rtype: str
          """
          return self._dn
  
      @dn.setter
      def dn(self, dn):
          """
          Sets the dn of this ComputeIpAddress.
  
          :param dn: The dn of this ComputeIpAddress.
          :type: str
          """
  
          self._dn = dn
  
      @property
      def http_port(self):
          """
          Gets the http_port of this ComputeIpAddress.
  
          :return: The http_port of this ComputeIpAddress.
          :rtype: int
          """
          return self._http_port
  
      @http_port.setter
      def http_port(self, http_port):
          """
          Sets the http_port of this ComputeIpAddress.
  
          :param http_port: The http_port of this ComputeIpAddress.
          :type: int
          """
  
          self._http_port = http_port
  
      @property
      def https_port(self):
          """
          Gets the https_port of this ComputeIpAddress.
  
          :return: The https_port of this ComputeIpAddress.
          :rtype: int
          """
          return self._https_port
  
      @https_port.setter
      def https_port(self, https_port):
          """
          Sets the https_port of this ComputeIpAddress.
  
          :param https_port: The https_port of this ComputeIpAddress.
          :type: int
          """
  
          self._https_port = https_port
  
      @property
      def kvm_port(self):
          """
          Gets the kvm_port of this ComputeIpAddress.
          Port number on which the KVM is running.
  
          :return: The kvm_port of this ComputeIpAddress.
          :rtype: int
          """
          return self._kvm_port
  
      @kvm_port.setter
      def kvm_port(self, kvm_port):
          """
          Sets the kvm_port of this ComputeIpAddress.
          Port number on which the KVM is running.
  
          :param kvm_port: The kvm_port of this ComputeIpAddress.
          :type: int
          """
  
          self._kvm_port = kvm_port
  
      @property
      def name(self):
          """
          Gets the name of this ComputeIpAddress.
  
          :return: The name of this ComputeIpAddress.
          :rtype: str
          """
          return self._name
  
      @name.setter
      def name(self, name):
          """
          Sets the name of this ComputeIpAddress.
  
          :param name: The name of this ComputeIpAddress.
          :type: str
          """
          allowed_values = ["Outband", "Inband"]
          if name not in allowed_values:
              raise ValueError(
                  "Invalid value for `name` ({0}), must be one of {1}"
                  .format(name, allowed_values)
              )
  
          self._name = name
  
      @property
      def subnet(self):
          """
          Gets the subnet of this ComputeIpAddress.
          Subnet of the KVM IP address.
  
          :return: The subnet of this ComputeIpAddress.
          :rtype: str
          """
          return self._subnet
  
      @subnet.setter
      def subnet(self, subnet):
          """
          Sets the subnet of this ComputeIpAddress.
          Subnet of the KVM IP address.
  
          :param subnet: The subnet of this ComputeIpAddress.
          :type: str
          """
  
          self._subnet = subnet
  
      @property
      def type(self):
          """
          Gets the type of this ComputeIpAddress.
  
          :return: The type of this ComputeIpAddress.
          :rtype: str
          """
          return self._type
  
      @type.setter
      def type(self, type):
          """
          Sets the type of this ComputeIpAddress.
  
          :param type: The type of this ComputeIpAddress.
          :type: str
          """
          allowed_values = ["MgmtInterface", "VnicIpV4StaticAddr", "VnicIpV4PooledAddr", "VnicIpV4MgmtPooledAddr", "VnicIpV6StaticAddr", "VnicIpV6MgmtPooledAddr", "VnicIpV4ProfDerivedAddr"]
          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
  
      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, ComputeIpAddress):
              return False
  
          return self.__dict__ == other.__dict__
  
      def __ne__(self, other):
          """
          Returns true if both objects are not equal
          """
          return not self == other
  