예제 #1
0
    def GetMetaData(self, request):
        """Get metadata from local metadata server.

    Any failed URL check will fail the whole action since our bios/service
    checks may not always correctly identify cloud machines. We don't want to
    wait on multiple DNS timeouts.

    Args:
      request: CloudMetadataRequest object
    Returns:
      cloud.CloudMetadataResponse object
    Raises:
      ValueError: if request has a timeout of 0. This is a defensive
      check (we pass 1.0) because the requests library just times out and it's
      not obvious why.
    """
        if request.timeout == 0:
            raise ValueError("Requests library can't handle timeout of 0")
        result = requests.request("GET",
                                  request.url,
                                  headers=request.headers,
                                  timeout=request.timeout)
        # By default requests doesn't raise on HTTP error codes.
        result.raise_for_status()

        # Requests does not always raise an exception when an incorrect response
        # is received. This fixes that behaviour.
        if not result.ok:
            raise requests.RequestException(response=result)

        return cloud.CloudMetadataResponse(label=request.label or request.url,
                                           text=result.text)
예제 #2
0
 def GetCloudVMMetadata(self, args):
     result_list = []
     for request in args.requests:
         result_list.append(
             cloud.CloudMetadataResponse(label=request.label or request.url,
                                         text=request.label))
     return [
         cloud.CloudMetadataResponses(responses=result_list,
                                      instance_type="GOOGLE")
     ]