  def ListDisks(self) -> Dict[str, 'GoogleComputeDisk']:
    """List disks in project.

    Returns:
      Dict[str, GoogleComputeDisk]: Dictionary mapping disk names (str) to
          their respective GoogleComputeDisk object.
    """
    disks = {}
    gce_disk_client = self.GceApi().disks() # pylint: disable=no-member
    responses = common.ExecuteRequest(
        gce_disk_client, 'aggregatedList', {'project': self.project_id})

    for response in responses:
      # Disks.aggregatedList returns both zones and regions in items.
      for location in response['items']:
        for disk in response['items'][location].get('disks', []):
          # Skip if regional disk, i.e. has no zone.
          if not disk.get('zone'):
            continue
          name = disk['name']
          resource_id = disk['id']
          _, zone = disk['zone'].rsplit('/', 1)
          disks[resource_id] = GoogleComputeDisk(
              self.project_id, zone, name, labels=disk.get('labels'))
    return disks
List disks in project.

Returns:
Dict[str, GoogleComputeDisk]: Dictionary mapping disk names (str) to
their respective GoogleComputeDisk object.
libcloudforensics/providers/gcp/internal/compute.py