mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-09-07 01:26:43 +00:00
![Paddy](/assets/img/avatar_default.png)
Switch to using Go modules. This migrates our vendor.json to use Go 1.11's modules system, and replaces the vendor folder with the output of go mod vendor. The vendored code should remain basically the same; I believe some tree shaking of packages and support scripts/licenses/READMEs/etc. happened. This also fixes Travis and our Makefile to no longer use govendor.
61 lines
1.3 KiB
Go
61 lines
1.3 KiB
Go
// Copyright 2014 Google Inc. All rights reserved.
|
|
// Use of this source code is governed by the Apache 2.0
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package internal
|
|
|
|
// This file has code for accessing metadata.
|
|
//
|
|
// References:
|
|
// https://cloud.google.com/compute/docs/metadata
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"net/http"
|
|
"net/url"
|
|
)
|
|
|
|
const (
|
|
metadataHost = "metadata"
|
|
metadataPath = "/computeMetadata/v1/"
|
|
)
|
|
|
|
var (
|
|
metadataRequestHeaders = http.Header{
|
|
"Metadata-Flavor": []string{"Google"},
|
|
}
|
|
)
|
|
|
|
// TODO(dsymonds): Do we need to support default values, like Python?
|
|
func mustGetMetadata(key string) []byte {
|
|
b, err := getMetadata(key)
|
|
if err != nil {
|
|
panic(fmt.Sprintf("Metadata fetch failed for '%s': %v", key, err))
|
|
}
|
|
return b
|
|
}
|
|
|
|
func getMetadata(key string) ([]byte, error) {
|
|
// TODO(dsymonds): May need to use url.Parse to support keys with query args.
|
|
req := &http.Request{
|
|
Method: "GET",
|
|
URL: &url.URL{
|
|
Scheme: "http",
|
|
Host: metadataHost,
|
|
Path: metadataPath + key,
|
|
},
|
|
Header: metadataRequestHeaders,
|
|
Host: metadataHost,
|
|
}
|
|
resp, err := http.DefaultClient.Do(req)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer resp.Body.Close()
|
|
if resp.StatusCode != 200 {
|
|
return nil, fmt.Errorf("metadata server returned HTTP %d", resp.StatusCode)
|
|
}
|
|
return ioutil.ReadAll(resp.Body)
|
|
}
|