  def GetMachineTypes(self, machine_type: str,
                      zone: Optional[str] = None) -> Dict[str, Any]:
    """Get selected machineTypes API object in specified zone/project.

    Args:
      machine_type: Name of the machine type.
      zone: Compute zone to get available machine types.

    Returns:
      The selected machineTypes API resource:
      https://cloud.google.com/compute/docs/reference/latest/machineTypes#resource  # pylint: disable=line-too-long

    Raises:
      HttpError if getting machineType object for the given machine-type name fails.
    """

    compute_zone = zone if zone else self.default_zone
    machine_types_client = self.GceApi().machineTypes() # pylint: disable=no-member
    params = {
        'project': self.project_id,
        'zone': compute_zone,
        'machineType': machine_type
    }
    # Safe to unpack, response is not paged.
    return common.ExecuteRequest(machine_types_client, 'get', params)[0]
Get selected machineTypes API object in specified zone/project.

Args:
machine_type: Name of the machine type.
zone: Compute zone to get available machine types.

Returns:
The selected machineTypes API resource:
https://cloud.google.com/compute/docs/reference/latest/machineTypes#resource  # pylint: disable=line-too-long

Raises:
HttpError if getting machineType object for the given machine-type name fails.
libcloudforensics/providers/gcp/internal/compute.py