text: # coding: utf-8
  """
      Cisco Intersight
  
      Cisco Intersight is a management platform delivered as a service with embedded analytics for your Cisco and 3rd party IT infrastructure. This platform offers an intelligent level of management that enables IT organizations to analyze, simplify, and automate their environments in more advanced ways than the prior generations of tools. Cisco Intersight provides an integrated and intuitive management experience for resources in the traditional data center as well as at the edge. With flexible deployment options to address complex security needs, getting started with Intersight is quick and easy. Cisco Intersight has deep integration with Cisco UCS and HyperFlex systems allowing for remote deployment, configuration, and ongoing maintenance. The model-based deployment works for a single system in a remote location or hundreds of systems in a data center and enables rapid, standardized configuration and deployment. It also streamlines maintaining those systems whether you are working with small or very large configurations.   # noqa: E501
  
      The version of the OpenAPI document: 1.0.9-1295
      Contact: intersight@cisco.com
      Generated by: https://openapi-generator.tech
  """
  
  import pprint
  import re  # noqa: F401
  
  import six
  
  from intersight.configuration import Configuration
  
  
  class ComputeRackUnitAllOf(object):
      """NOTE: This class is auto generated by OpenAPI Generator.
      Ref: https://openapi-generator.tech
  
      Do not edit the class manually.
      """
      """
      Attributes:
        openapi_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.
      """
      openapi_types = {
          'server_id': 'int',
          'adapters': 'list[AdapterUnit]',
          'bios_bootmode': 'BiosBootMode',
          'biosunits': 'list[BiosUnit]',
          'bmc': 'ManagementController',
          'board': 'ComputeBoard',
          'boot_device_bootmode': 'BootDeviceBootMode',
          'fanmodules': 'list[EquipmentFanModule]',
          'generic_inventory_holders': 'list[InventoryGenericInventoryHolder]',
          'locator_led': 'EquipmentLocatorLed',
          'pci_devices': 'list[PciDevice]',
          'psus': 'list[EquipmentPsu]',
          'rack_enclosure_slot': 'EquipmentRackEnclosureSlot',
          'registered_device': 'AssetDeviceRegistration',
          'sas_expanders': 'list[StorageSasExpander]',
          'storage_enclosures': 'list[StorageEnclosure]',
          'top_system': 'TopSystem'
      }
  
      attribute_map = {
          'server_id': 'ServerId',
          'adapters': 'Adapters',
          'bios_bootmode': 'BiosBootmode',
          'biosunits': 'Biosunits',
          'bmc': 'Bmc',
          'board': 'Board',
          'boot_device_bootmode': 'BootDeviceBootmode',
          'fanmodules': 'Fanmodules',
          'generic_inventory_holders': 'GenericInventoryHolders',
          'locator_led': 'LocatorLed',
          'pci_devices': 'PciDevices',
          'psus': 'Psus',
          'rack_enclosure_slot': 'RackEnclosureSlot',
          'registered_device': 'RegisteredDevice',
          'sas_expanders': 'SasExpanders',
          'storage_enclosures': 'StorageEnclosures',
          'top_system': 'TopSystem'
      }
  
      def __init__(self,
                   server_id=None,
                   adapters=None,
                   bios_bootmode=None,
                   biosunits=None,
                   bmc=None,
                   board=None,
                   boot_device_bootmode=None,
                   fanmodules=None,
                   generic_inventory_holders=None,
                   locator_led=None,
                   pci_devices=None,
                   psus=None,
                   rack_enclosure_slot=None,
                   registered_device=None,
                   sas_expanders=None,
                   storage_enclosures=None,
                   top_system=None,
                   local_vars_configuration=None):  # noqa: E501
          """ComputeRackUnitAllOf - a model defined in OpenAPI"""  # noqa: E501
          if local_vars_configuration is None:
              local_vars_configuration = Configuration()
          self.local_vars_configuration = local_vars_configuration
  
          self._server_id = None
          self._adapters = None
          self._bios_bootmode = None
          self._biosunits = None
          self._bmc = None
          self._board = None
          self._boot_device_bootmode = None
          self._fanmodules = None
          self._generic_inventory_holders = None
          self._locator_led = None
          self._pci_devices = None
          self._psus = None
          self._rack_enclosure_slot = None
          self._registered_device = None
          self._sas_expanders = None
          self._storage_enclosures = None
          self._top_system = None
          self.discriminator = None
  
          if server_id is not None:
              self.server_id = server_id
          if adapters is not None:
              self.adapters = adapters
          if bios_bootmode is not None:
              self.bios_bootmode = bios_bootmode
          if biosunits is not None:
              self.biosunits = biosunits
          if bmc is not None:
              self.bmc = bmc
          if board is not None:
              self.board = board
          if boot_device_bootmode is not None:
              self.boot_device_bootmode = boot_device_bootmode
          if fanmodules is not None:
              self.fanmodules = fanmodules
          if generic_inventory_holders is not None:
              self.generic_inventory_holders = generic_inventory_holders
          if locator_led is not None:
              self.locator_led = locator_led
          if pci_devices is not None:
              self.pci_devices = pci_devices
          if psus is not None:
              self.psus = psus
          if rack_enclosure_slot is not None:
              self.rack_enclosure_slot = rack_enclosure_slot
          if registered_device is not None:
              self.registered_device = registered_device
          if sas_expanders is not None:
              self.sas_expanders = sas_expanders
          if storage_enclosures is not None:
              self.storage_enclosures = storage_enclosures
          if top_system is not None:
              self.top_system = top_system
  
      @property
      def server_id(self):
          """Gets the server_id of this ComputeRackUnitAllOf.  # noqa: E501
  
  
          :return: The server_id of this ComputeRackUnitAllOf.  # noqa: E501
          :rtype: int
          """
          return self._server_id
  
      @server_id.setter
      def server_id(self, server_id):
          """Sets the server_id of this ComputeRackUnitAllOf.
  
  
          :param server_id: The server_id of this ComputeRackUnitAllOf.  # noqa: E501
          :type: int
          """
  
          self._server_id = server_id
  
      @property
      def adapters(self):
          """Gets the adapters of this ComputeRackUnitAllOf.  # noqa: E501
  
          A reference to a adapterUnit resource. When the $expand query parameter is specified, the referenced resource is returned inline.   # noqa: E501
  
          :return: The adapters of this ComputeRackUnitAllOf.  # noqa: E501
          :rtype: list[AdapterUnit]
          """
          return self._adapters
  
      @adapters.setter
      def adapters(self, adapters):
          """Sets the adapters of this ComputeRackUnitAllOf.
  
          A reference to a adapterUnit resource. When the $expand query parameter is specified, the referenced resource is returned inline.   # noqa: E501
  
          :param adapters: The adapters of this ComputeRackUnitAllOf.  # noqa: E501
          :type: list[AdapterUnit]
          """
  
          self._adapters = adapters
  
      @property
      def bios_bootmode(self):
          """Gets the bios_bootmode of this ComputeRackUnitAllOf.  # noqa: E501
  
  
          :return: The bios_bootmode of this ComputeRackUnitAllOf.  # noqa: E501
          :rtype: BiosBootMode
          """
          return self._bios_bootmode
  
      @bios_bootmode.setter
      def bios_bootmode(self, bios_bootmode):
          """Sets the bios_bootmode of this ComputeRackUnitAllOf.
  
  
          :param bios_bootmode: The bios_bootmode of this ComputeRackUnitAllOf.  # noqa: E501
          :type: BiosBootMode
          """
  
          self._bios_bootmode = bios_bootmode
  
      @property
      def biosunits(self):
          """Gets the biosunits of this ComputeRackUnitAllOf.  # noqa: E501
  
          A reference to a biosUnit resource. When the $expand query parameter is specified, the referenced resource is returned inline.   # noqa: E501
  
          :return: The biosunits of this ComputeRackUnitAllOf.  # noqa: E501
          :rtype: list[BiosUnit]
          """
          return self._biosunits
  
      @biosunits.setter
      def biosunits(self, biosunits):
          """Sets the biosunits of this ComputeRackUnitAllOf.
  
          A reference to a biosUnit resource. When the $expand query parameter is specified, the referenced resource is returned inline.   # noqa: E501
  
          :param biosunits: The biosunits of this ComputeRackUnitAllOf.  # noqa: E501
          :type: list[BiosUnit]
          """
  
          self._biosunits = biosunits
  
      @property
      def bmc(self):
          """Gets the bmc of this ComputeRackUnitAllOf.  # noqa: E501
  
  
          :return: The bmc of this ComputeRackUnitAllOf.  # noqa: E501
          :rtype: ManagementController
          """
          return self._bmc
  
      @bmc.setter
      def bmc(self, bmc):
          """Sets the bmc of this ComputeRackUnitAllOf.
  
  
          :param bmc: The bmc of this ComputeRackUnitAllOf.  # noqa: E501
          :type: ManagementController
          """
  
          self._bmc = bmc
  
      @property
      def board(self):
          """Gets the board of this ComputeRackUnitAllOf.  # noqa: E501
  
  
          :return: The board of this ComputeRackUnitAllOf.  # noqa: E501
          :rtype: ComputeBoard
          """
          return self._board
  
      @board.setter
      def board(self, board):
          """Sets the board of this ComputeRackUnitAllOf.
  
  
          :param board: The board of this ComputeRackUnitAllOf.  # noqa: E501
          :type: ComputeBoard
          """
  
          self._board = board
  
      @property
      def boot_device_bootmode(self):
          """Gets the boot_device_bootmode of this ComputeRackUnitAllOf.  # noqa: E501
  
  
          :return: The boot_device_bootmode of this ComputeRackUnitAllOf.  # noqa: E501
          :rtype: BootDeviceBootMode
          """
          return self._boot_device_bootmode
  
      @boot_device_bootmode.setter
      def boot_device_bootmode(self, boot_device_bootmode):
          """Sets the boot_device_bootmode of this ComputeRackUnitAllOf.
  
  
          :param boot_device_bootmode: The boot_device_bootmode of this ComputeRackUnitAllOf.  # noqa: E501
          :type: BootDeviceBootMode
          """
  
          self._boot_device_bootmode = boot_device_bootmode
  
      @property
      def fanmodules(self):
          """Gets the fanmodules of this ComputeRackUnitAllOf.  # noqa: E501
  
          A reference to a equipmentFanModule resource. When the $expand query parameter is specified, the referenced resource is returned inline.   # noqa: E501
  
          :return: The fanmodules of this ComputeRackUnitAllOf.  # noqa: E501
          :rtype: list[EquipmentFanModule]
          """
          return self._fanmodules
  
      @fanmodules.setter
      def fanmodules(self, fanmodules):
          """Sets the fanmodules of this ComputeRackUnitAllOf.
  
          A reference to a equipmentFanModule resource. When the $expand query parameter is specified, the referenced resource is returned inline.   # noqa: E501
  
          :param fanmodules: The fanmodules of this ComputeRackUnitAllOf.  # noqa: E501
          :type: list[EquipmentFanModule]
          """
  
          self._fanmodules = fanmodules
  
      @property
      def generic_inventory_holders(self):
          """Gets the generic_inventory_holders of this ComputeRackUnitAllOf.  # noqa: E501
  
          A reference to a inventoryGenericInventoryHolder resource. When the $expand query parameter is specified, the referenced resource is returned inline.   # noqa: E501
  
          :return: The generic_inventory_holders of this ComputeRackUnitAllOf.  # noqa: E501
          :rtype: list[InventoryGenericInventoryHolder]
          """
          return self._generic_inventory_holders
  
      @generic_inventory_holders.setter
      def generic_inventory_holders(self, generic_inventory_holders):
          """Sets the generic_inventory_holders of this ComputeRackUnitAllOf.
  
          A reference to a inventoryGenericInventoryHolder resource. When the $expand query parameter is specified, the referenced resource is returned inline.   # noqa: E501
  
          :param generic_inventory_holders: The generic_inventory_holders of this ComputeRackUnitAllOf.  # noqa: E501
          :type: list[InventoryGenericInventoryHolder]
          """
  
          self._generic_inventory_holders = generic_inventory_holders
  
      @property
      def locator_led(self):
          """Gets the locator_led of this ComputeRackUnitAllOf.  # noqa: E501
  
  
          :return: The locator_led of this ComputeRackUnitAllOf.  # noqa: E501
          :rtype: EquipmentLocatorLed
          """
          return self._locator_led
  
      @locator_led.setter
      def locator_led(self, locator_led):
          """Sets the locator_led of this ComputeRackUnitAllOf.
  
  
          :param locator_led: The locator_led of this ComputeRackUnitAllOf.  # noqa: E501
          :type: EquipmentLocatorLed
          """
  
          self._locator_led = locator_led
  
      @property
      def pci_devices(self):
          """Gets the pci_devices of this ComputeRackUnitAllOf.  # noqa: E501
  
          A reference to a pciDevice resource. When the $expand query parameter is specified, the referenced resource is returned inline.   # noqa: E501
  
          :return: The pci_devices of this ComputeRackUnitAllOf.  # noqa: E501
          :rtype: list[PciDevice]
          """
          return self._pci_devices
  
      @pci_devices.setter
      def pci_devices(self, pci_devices):
          """Sets the pci_devices of this ComputeRackUnitAllOf.
  
          A reference to a pciDevice resource. When the $expand query parameter is specified, the referenced resource is returned inline.   # noqa: E501
  
          :param pci_devices: The pci_devices of this ComputeRackUnitAllOf.  # noqa: E501
          :type: list[PciDevice]
          """
  
          self._pci_devices = pci_devices
  
      @property
      def psus(self):
          """Gets the psus of this ComputeRackUnitAllOf.  # noqa: E501
  
          A reference to a equipmentPsu resource. When the $expand query parameter is specified, the referenced resource is returned inline.   # noqa: E501
  
          :return: The psus of this ComputeRackUnitAllOf.  # noqa: E501
          :rtype: list[EquipmentPsu]
          """
          return self._psus
  
      @psus.setter
      def psus(self, psus):
          """Sets the psus of this ComputeRackUnitAllOf.
  
          A reference to a equipmentPsu resource. When the $expand query parameter is specified, the referenced resource is returned inline.   # noqa: E501
  
          :param psus: The psus of this ComputeRackUnitAllOf.  # noqa: E501
          :type: list[EquipmentPsu]
          """
  
          self._psus = psus
  
      @property
      def rack_enclosure_slot(self):
          """Gets the rack_enclosure_slot of this ComputeRackUnitAllOf.  # noqa: E501
  
  
          :return: The rack_enclosure_slot of this ComputeRackUnitAllOf.  # noqa: E501
          :rtype: EquipmentRackEnclosureSlot
          """
          return self._rack_enclosure_slot
  
      @rack_enclosure_slot.setter
      def rack_enclosure_slot(self, rack_enclosure_slot):
          """Sets the rack_enclosure_slot of this ComputeRackUnitAllOf.
  
  
          :param rack_enclosure_slot: The rack_enclosure_slot of this ComputeRackUnitAllOf.  # noqa: E501
          :type: EquipmentRackEnclosureSlot
          """
  
          self._rack_enclosure_slot = rack_enclosure_slot
  
      @property
      def registered_device(self):
          """Gets the registered_device of this ComputeRackUnitAllOf.  # noqa: E501
  
  
          :return: The registered_device of this ComputeRackUnitAllOf.  # noqa: E501
          :rtype: AssetDeviceRegistration
          """
          return self._registered_device
  
      @registered_device.setter
      def registered_device(self, registered_device):
          """Sets the registered_device of this ComputeRackUnitAllOf.
  
  
          :param registered_device: The registered_device of this ComputeRackUnitAllOf.  # noqa: E501
          :type: AssetDeviceRegistration
          """
  
          self._registered_device = registered_device
  
      @property
      def sas_expanders(self):
          """Gets the sas_expanders of this ComputeRackUnitAllOf.  # noqa: E501
  
          A reference to a storageSasExpander resource. When the $expand query parameter is specified, the referenced resource is returned inline.   # noqa: E501
  
          :return: The sas_expanders of this ComputeRackUnitAllOf.  # noqa: E501
          :rtype: list[StorageSasExpander]
          """
          return self._sas_expanders
  
      @sas_expanders.setter
      def sas_expanders(self, sas_expanders):
          """Sets the sas_expanders of this ComputeRackUnitAllOf.
  
          A reference to a storageSasExpander resource. When the $expand query parameter is specified, the referenced resource is returned inline.   # noqa: E501
  
          :param sas_expanders: The sas_expanders of this ComputeRackUnitAllOf.  # noqa: E501
          :type: list[StorageSasExpander]
          """
  
          self._sas_expanders = sas_expanders
  
      @property
      def storage_enclosures(self):
          """Gets the storage_enclosures of this ComputeRackUnitAllOf.  # noqa: E501
  
          A reference to a storageEnclosure resource. When the $expand query parameter is specified, the referenced resource is returned inline.   # noqa: E501
  
          :return: The storage_enclosures of this ComputeRackUnitAllOf.  # noqa: E501
          :rtype: list[StorageEnclosure]
          """
          return self._storage_enclosures
  
      @storage_enclosures.setter
      def storage_enclosures(self, storage_enclosures):
          """Sets the storage_enclosures of this ComputeRackUnitAllOf.
  
          A reference to a storageEnclosure resource. When the $expand query parameter is specified, the referenced resource is returned inline.   # noqa: E501
  
          :param storage_enclosures: The storage_enclosures of this ComputeRackUnitAllOf.  # noqa: E501
          :type: list[StorageEnclosure]
          """
  
          self._storage_enclosures = storage_enclosures
  
      @property
      def top_system(self):
          """Gets the top_system of this ComputeRackUnitAllOf.  # noqa: E501
  
  
          :return: The top_system of this ComputeRackUnitAllOf.  # noqa: E501
          :rtype: TopSystem
          """
          return self._top_system
  
      @top_system.setter
      def top_system(self, top_system):
          """Sets the top_system of this ComputeRackUnitAllOf.
  
  
          :param top_system: The top_system of this ComputeRackUnitAllOf.  # noqa: E501
          :type: TopSystem
          """
  
          self._top_system = top_system
  
      def to_dict(self):
          """Returns the model properties as a dict"""
          result = {}
  
          for attr, _ in six.iteritems(self.openapi_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 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, ComputeRackUnitAllOf):
              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, ComputeRackUnitAllOf):
              return True
  
          return self.to_dict() != other.to_dict()
  