docs: def ConvertCloudMetadataResponsesToCloudInstance(metadata_responses):
    """Convert CloudMetadataResponses to CloudInstance proto.
  
    Ideally we'd just get the client to fill out a CloudInstance proto, but we
    need to keep the flexibility of collecting new metadata and creating new
    fields without a client push. So instead we bring back essentially a dict of
    results and fill the proto on the server side.
  
    Args:
      metadata_responses: CloudMetadataResponses object from the client.
    Returns:
      CloudInstance object
    Raises:
      ValueError: if client passes bad or unset cloud type.
    """
    if metadata_responses.instance_type == "GOOGLE":
      cloud_instance = GoogleCloudInstance()
      result = CloudInstance(cloud_type="GOOGLE", google=cloud_instance)
    elif metadata_responses.instance_type == "AMAZON":
      cloud_instance = AmazonCloudInstance()
      result = CloudInstance(cloud_type="AMAZON", amazon=cloud_instance)
    else:
      raise ValueError(
          "Unknown cloud instance type: %s" % metadata_responses.instance_type)
  
    for cloud_metadata in metadata_responses.responses:
      setattr(cloud_instance, cloud_metadata.label, cloud_metadata.text)
  
    if result.cloud_type == "GOOGLE":
      cloud_instance.unique_id = MakeGoogleUniqueID(cloud_instance)
  
    return result