<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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