docs: def get_server_capabilities(self):
          """Gets server properties which can be used for scheduling
  
          :returns: a dictionary of hardware properties like firmware
                    versions, server model.
          :raises: IloError, if iLO returns an error in command execution.
  
          """
          capabilities = {}
          system = self._get_host_details()
          capabilities['server_model'] = system['Model']
          rom_firmware_version = (
              system['Oem']['Hp']['Bios']['Current']['VersionString'])
          capabilities['rom_firmware_version'] = rom_firmware_version
          capabilities.update(self._get_ilo_firmware_version())
          capabilities.update(self._get_number_of_gpu_devices_connected())
          drive_details = self._get_drive_type_and_speed()
          if drive_details is not None:
              capabilities.update(drive_details)
          raid_details = self._get_logical_raid_levels()
          if raid_details is not None:
              capabilities.update(raid_details)
          if self._is_raid_supported():
              capabilities['hardware_supports_raid'] = 'true'
          boot_modes = common.get_supported_boot_modes(
              self.get_supported_boot_mode())
          capabilities.update({
              'boot_mode_bios': boot_modes.boot_mode_bios,
              'boot_mode_uefi': boot_modes.boot_mode_uefi})
          if self._get_tpm_capability():
              capabilities['trusted_boot'] = 'true'
          if self._get_cpu_virtualization():
              capabilities['cpu_vt'] = 'true'
          if self._get_nvdimm_n_status():
              capabilities['nvdimm_n'] = 'true'
          try:
              self._check_iscsi_rest_patch_allowed()
              capabilities['iscsi_boot'] = 'true'
          except exception.IloError:
              # If an error is raised dont populate the capability
              # iscsi_boot
              pass
          try:
              self.get_secure_boot_mode()
              capabilities['secure_boot'] = 'true'
          except exception.IloCommandNotSupportedError:
              # If an error is raised dont populate the capability
              # secure_boot
              pass
          if self._is_sriov_enabled():
              capabilities['sriov_enabled'] = 'true'
          return capabilities