docs: def get_capabilities_properties(d_info,
                                  capa_keys,
                                  gpu_ids,
                                  fpga_ids=None,
                                  **kwargs):
      """get capabilities properties
  
      This function returns a dictionary which contains keys
      and their values from the report.
  
  
      :param d_info: the dictionary of ipmitool parameters for accessing a node.
      :param capa_keys: a list of keys for additional capabilities properties.
      :param gpu_ids: the list of string contains <vendorID>/<deviceID>
      for GPU.
      :param fpga_ids: the list of string contains <vendorID>/<deviceID>
      for CPU FPGA.
      :param kwargs: additional arguments passed to scciclient.
      :returns: a dictionary which contains keys and their values.
      """
  
      snmp_client = snmp.SNMPClient(d_info['irmc_address'],
                                    d_info['irmc_snmp_port'],
                                    d_info['irmc_snmp_version'],
                                    d_info['irmc_snmp_community'],
                                    d_info['irmc_snmp_security'])
      try:
          v = {}
          if 'rom_firmware_version' in capa_keys:
              v['rom_firmware_version'] = \
                  snmp.get_bios_firmware_version(snmp_client)
  
          if 'irmc_firmware_version' in capa_keys:
              v['irmc_firmware_version'] = \
                  snmp.get_irmc_firmware_version(snmp_client)
  
          if 'server_model' in capa_keys:
              v['server_model'] = snmp.get_server_model(snmp_client)
  
          # Sometime the server started but PCI device list building is
          # still in progress so system will response error. We have to wait
          # for some more seconds.
          if kwargs.get('sleep_flag', False) and \
                  any(k in capa_keys for k in ('pci_gpu_devices', 'cpu_fpga')):
              time.sleep(5)
  
          if 'pci_gpu_devices' in capa_keys:
              v['pci_gpu_devices'] = ipmi.get_pci_device(d_info, gpu_ids)
  
          if fpga_ids is not None and 'cpu_fpga' in capa_keys:
              v['cpu_fpga'] = ipmi.get_pci_device(d_info, fpga_ids)
  
          if 'trusted_boot' in capa_keys:
              v['trusted_boot'] = ipmi.get_tpm_status(d_info)
  
          return v
      except (snmp.SNMPFailure, ipmi.IPMIFailure) as err:
          raise SCCIClientError('Capabilities inspection failed: %s' % err)