code: def GetSummary(self):
      
      summary = rdf_client.ClientSummary()
      summary.client_id = self.client_id
      summary.timestamp = self.timestamp
  
      summary.system_info.release = self.os_release
      summary.system_info.version = str(self.os_version or "")
      summary.system_info.kernel = self.kernel
      summary.system_info.machine = self.arch
      summary.system_info.install_date = self.install_time
      kb = self.knowledge_base
      if kb:
        summary.system_info.fqdn = kb.fqdn
        summary.system_info.system = kb.os
        summary.users = kb.users
        summary.interfaces = self.interfaces
        summary.client_info = self.startup_info.client_info
        if kb.os_release:
          summary.system_info.release = kb.os_release
          if kb.os_major_version:
            summary.system_info.version = "%d.%d" % (kb.os_major_version,
                                                     kb.os_minor_version)
  
      hwi = self.hardware_info
      if hwi:
        summary.serial_number = hwi.serial_number
        summary.system_manufacturer = hwi.system_manufacturer
        summary.system_uuid = hwi.system_uuid
  
      cloud_instance = self.cloud_instance
      if cloud_instance:
        summary.cloud_type = cloud_instance.cloud_type
        if cloud_instance.cloud_type == "GOOGLE":
          summary.cloud_instance_id = cloud_instance.google.unique_id
        elif cloud_instance.cloud_type == "AMAZON":
          summary.cloud_instance_id = cloud_instance.amazon.instance_id
        else:
          raise ValueError("Bad cloud type: %s" % cloud_instance.cloud_type)
      return summary
docs: Gets a client summary object.
  
      Returns:
        rdf_client.ClientSummary
      Raises:
        ValueError: on bad cloud type