aboutsummaryrefslogtreecommitdiff
path: root/vendor/cloud.google.com/go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/cloud.google.com/go')
-rw-r--r--vendor/cloud.google.com/go/.travis.yml4
-rw-r--r--vendor/cloud.google.com/go/CONTRIBUTING.md6
-rw-r--r--vendor/cloud.google.com/go/MIGRATION.md54
-rw-r--r--vendor/cloud.google.com/go/README.md288
-rw-r--r--vendor/cloud.google.com/go/compute/metadata/metadata.go35
-rw-r--r--vendor/cloud.google.com/go/internal/cloud.go64
-rw-r--r--vendor/cloud.google.com/go/internal/retry.go55
-rw-r--r--vendor/cloud.google.com/go/internal/retry_test.go64
-rw-r--r--vendor/cloud.google.com/go/key.json.encbin1248 -> 2432 bytes
-rw-r--r--vendor/cloud.google.com/go/old-news.md139
-rwxr-xr-xvendor/cloud.google.com/go/run-tests.sh86
11 files changed, 425 insertions, 370 deletions
diff --git a/vendor/cloud.google.com/go/.travis.yml b/vendor/cloud.google.com/go/.travis.yml
index d9be5f73e..8c769d71f 100644
--- a/vendor/cloud.google.com/go/.travis.yml
+++ b/vendor/cloud.google.com/go/.travis.yml
@@ -7,9 +7,9 @@ go:
install:
- go get -v cloud.google.com/go/...
script:
-- openssl aes-256-cbc -K $encrypted_912ff8fa81ad_key -iv $encrypted_912ff8fa81ad_iv -in key.json.enc -out key.json -d
+- openssl aes-256-cbc -K $encrypted_a8b3f4fc85f4_key -iv $encrypted_a8b3f4fc85f4_iv -in key.json.enc -out key.json -d
- GCLOUD_TESTS_GOLANG_PROJECT_ID="dulcet-port-762" GCLOUD_TESTS_GOLANG_KEY="$(pwd)/key.json"
- go test -race -v cloud.google.com/go/...
+ ./run-tests.sh $TRAVIS_COMMIT
env:
matrix:
# The GCLOUD_TESTS_API_KEY environment variable.
diff --git a/vendor/cloud.google.com/go/CONTRIBUTING.md b/vendor/cloud.google.com/go/CONTRIBUTING.md
index 2b4bac995..aed05dc4f 100644
--- a/vendor/cloud.google.com/go/CONTRIBUTING.md
+++ b/vendor/cloud.google.com/go/CONTRIBUTING.md
@@ -4,6 +4,12 @@
1. `go get golang.org/x/review/git-codereview` to install the code reviewing tool.
1. You will need to ensure that your `GOBIN` directory (by default
`$GOPATH/bin`) is in your `PATH` so that git can find the command.
+ 1. If you would like, you may want to set up aliases for git-codereview,
+ such that `git codereview change` becomes `git change`. See the
+ [godoc](https://godoc.org/golang.org/x/review/git-codereview) for details.
+ 1. Should you run into issues with the git-codereview tool, please note
+ that all error messages will assume that you have set up these
+ aliases.
1. Get the cloud package by running `go get -d cloud.google.com/go`.
1. If you have already checked out the source, make sure that the remote git
origin is https://code.googlesource.com/gocloud:
diff --git a/vendor/cloud.google.com/go/MIGRATION.md b/vendor/cloud.google.com/go/MIGRATION.md
new file mode 100644
index 000000000..791210de1
--- /dev/null
+++ b/vendor/cloud.google.com/go/MIGRATION.md
@@ -0,0 +1,54 @@
+# Code Changes
+
+## v0.10.0
+
+- pubsub: Replace
+
+ ```
+ sub.ModifyPushConfig(ctx, pubsub.PushConfig{Endpoint: "https://example.com/push"})
+ ```
+
+ with
+
+ ```
+ sub.Update(ctx, pubsub.SubscriptionConfigToUpdate{
+ PushConfig: &pubsub.PushConfig{Endpoint: "https://example.com/push"},
+ })
+ ```
+
+- trace: traceGRPCServerInterceptor will be provided from *trace.Client.
+Given an initialized `*trace.Client` named `tc`, instead of
+
+ ```
+ s := grpc.NewServer(grpc.UnaryInterceptor(trace.GRPCServerInterceptor(tc)))
+ ```
+
+ write
+
+ ```
+ s := grpc.NewServer(grpc.UnaryInterceptor(tc.GRPCServerInterceptor()))
+ ```
+
+- trace trace.GRPCClientInterceptor will also provided from *trace.Client.
+Instead of
+
+ ```
+ conn, err := grpc.Dial(srv.Addr, grpc.WithUnaryInterceptor(trace.GRPCClientInterceptor()))
+ ```
+
+ write
+
+ ```
+ conn, err := grpc.Dial(srv.Addr, grpc.WithUnaryInterceptor(tc.GRPCClientInterceptor()))
+ ```
+
+- trace: We removed the deprecated `trace.EnableGRPCTracing`. Use the gRPC
+interceptor as a dial option as shown below when initializing Cloud package
+clients:
+
+ ```
+ c, err := pubsub.NewClient(ctx, "project-id", option.WithGRPCDialOption(grpc.WithUnaryInterceptor(tc.GRPCClientInterceptor())))
+ if err != nil {
+ ...
+ }
+ ```
diff --git a/vendor/cloud.google.com/go/README.md b/vendor/cloud.google.com/go/README.md
index 5c188eb22..937a528b9 100644
--- a/vendor/cloud.google.com/go/README.md
+++ b/vendor/cloud.google.com/go/README.md
@@ -1,22 +1,21 @@
-# Google Cloud for Go
+# Google Cloud Client Libraries for Go
-[![Build Status](https://travis-ci.org/GoogleCloudPlatform/google-cloud-go.svg?branch=master)](https://travis-ci.org/GoogleCloudPlatform/google-cloud-go)
[![GoDoc](https://godoc.org/cloud.google.com/go?status.svg)](https://godoc.org/cloud.google.com/go)
+Go packages for [Google Cloud Platform](https://cloud.google.com) services.
+
``` go
import "cloud.google.com/go"
```
-Go packages for Google Cloud Platform services.
-
To install the packages on your system,
```
$ go get -u cloud.google.com/go/...
```
-**NOTE:** These packages are under development, and may occasionally make
-backwards-incompatible changes.
+**NOTE:** Some of these packages are under development, and may occasionally
+make backwards-incompatible changes.
**NOTE:** Github repo is a mirror of [https://code.googlesource.com/gocloud](https://code.googlesource.com/gocloud).
@@ -34,154 +33,84 @@ backwards-incompatible changes.
## News
-_February 14, 2017_
-
-Release of a client library for Spanner. See
-the
-[blog post](https://cloudplatform.googleblog.com/2017/02/introducing-Cloud-Spanner-a-global-database-service-for-mission-critical-applications.html).
-
-Note that although the Spanner service is beta, the Go client library is alpha.
-
-_December 12, 2016_
+_August 22, 2017+
-Beta release of BigQuery, DataStore, Logging and Storage. See the
-[blog post](https://cloudplatform.googleblog.com/2016/12/announcing-new-google-cloud-client.html).
+*v0.12.0*
-Also, BigQuery now supports structs. Read a row directly into a struct with
-`RowIterator.Next`, and upload a row directly from a struct with `Uploader.Put`.
-You can also use field tags. See the [package documentation][cloud-bigquery-ref]
-for details.
+- pubsub: Subscription.Receive now uses streaming pull.
-_December 5, 2016_
+- pubsub: add Client.TopicInProject to access topics in a different project
+ than the client.
-More changes to BigQuery:
+- errors: renamed errorreporting. The errors package will be removed shortly.
-* The `ValueList` type was removed. It is no longer necessary. Instead of
- ```go
- var v ValueList
- ... it.Next(&v) ..
- ```
- use
+- datastore: improved retry behavior.
- ```go
- var v []Value
- ... it.Next(&v) ...
- ```
+- bigquery: support updates to dataset metadata, with etags.
-* Previously, repeatedly calling `RowIterator.Next` on the same `[]Value` or
- `ValueList` would append to the slice. Now each call resets the size to zero first.
+- bigquery: add etag support to Table.Update (BREAKING: etag argument added).
-* Schema inference will infer the SQL type BYTES for a struct field of
- type []byte. Previously it inferred STRING.
+- bigquery: generate all job IDs on the client.
-* The types `uint`, `uint64` and `uintptr` are no longer supported in schema
- inference. BigQuery's integer type is INT64, and those types may hold values
- that are not correctly represented in a 64-bit signed integer.
+- storage: support bucket lifecycle configurations.
-* The SQL types DATE, TIME and DATETIME are now supported. They correspond to
- the `Date`, `Time` and `DateTime` types in the new `cloud.google.com/go/civil`
- package.
-
-_November 17, 2016_
-
-Change to BigQuery: values from INTEGER columns will now be returned as int64,
-not int. This will avoid errors arising from large values on 32-bit systems.
-
-_November 8, 2016_
-
-New datastore feature: datastore now encodes your nested Go structs as Entity values,
-instead of a flattened list of the embedded struct's fields.
-This means that you may now have twice-nested slices, eg.
-```go
-type State struct {
- Cities []struct{
- Populations []int
- }
-}
-```
-See [the announcement](https://groups.google.com/forum/#!topic/google-api-go-announce/79jtrdeuJAg) for
-more details.
+_July 31, 2017_
-_November 8, 2016_
+*v0.11.0*
-Breaking changes to datastore: contexts no longer hold namespaces; instead you
-must set a key's namespace explicitly. Also, key functions have been changed
-and renamed.
+- Clients for spanner, pubsub and video are now in beta.
-* The WithNamespace function has been removed. To specify a namespace in a Query, use the Query.Namespace method:
- ```go
- q := datastore.NewQuery("Kind").Namespace("ns")
- ```
+- New client for DLP.
-* All the fields of Key are exported. That means you can construct any Key with a struct literal:
- ```go
- k := &Key{Kind: "Kind", ID: 37, Namespace: "ns"}
- ```
+- spanner: performance and testing improvements.
-* As a result of the above, the Key methods Kind, ID, d.Name, Parent, SetParent and Namespace have been removed.
+- storage: requester-pays buckets are supported.
-* `NewIncompleteKey` has been removed, replaced by `IncompleteKey`. Replace
- ```go
- NewIncompleteKey(ctx, kind, parent)
- ```
- with
- ```go
- IncompleteKey(kind, parent)
- ```
- and if you do use namespaces, make sure you set the namespace on the returned key.
+- storage, profiler, bigtable, bigquery: bug fixes and other minor improvements.
-* `NewKey` has been removed, replaced by `NameKey` and `IDKey`. Replace
- ```go
- NewKey(ctx, kind, name, 0, parent)
- NewKey(ctx, kind, "", id, parent)
- ```
- with
- ```go
- NameKey(kind, name, parent)
- IDKey(kind, id, parent)
- ```
- and if you do use namespaces, make sure you set the namespace on the returned key.
+- pubsub: bug fixes and other minor improvements
-* The `Done` variable has been removed. Replace `datastore.Done` with `iterator.Done`, from the package `google.golang.org/api/iterator`.
+_June 17, 2017_
-* The `Client.Close` method will have a return type of error. It will return the result of closing the underlying gRPC connection.
-See [the announcement](https://groups.google.com/forum/#!topic/google-api-go-announce/hqXtM_4Ix-0) for
-more details.
+*v0.10.0*
-_October 27, 2016_
+- pubsub: Subscription.ModifyPushConfig replaced with Subscription.Update.
-Breaking change to bigquery: `NewGCSReference` is now a function,
-not a method on `Client`.
+- pubsub: Subscription.Receive now runs concurrently for higher throughput.
-New bigquery feature: `Table.LoaderFrom` now accepts a `ReaderSource`, enabling
-loading data into a table from a file or any `io.Reader`.
+- vision: cloud.google.com/go/vision is deprecated. Use
+cloud.google.com/go/vision/apiv1 instead.
-_October 21, 2016_
+- translation: now stable.
-Breaking change to pubsub: removed `pubsub.Done`.
+- trace: several changes to the surface. See the link below.
-Use `iterator.Done` instead, where `iterator` is the package
-`google.golang.org/api/iterator`.
+[Code changes required from v0.9.0.](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/MIGRATION.md)
[Older news](https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/old-news.md)
## Supported APIs
-Google API | Status | Package
--------------------------------|--------------|-----------------------------------------------------------
-[Datastore][cloud-datastore] | beta | [`cloud.google.com/go/datastore`][cloud-datastore-ref]
-[Storage][cloud-storage] | beta | [`cloud.google.com/go/storage`][cloud-storage-ref]
-[Bigtable][cloud-bigtable] | beta | [`cloud.google.com/go/bigtable`][cloud-bigtable-ref]
-[BigQuery][cloud-bigquery] | beta | [`cloud.google.com/go/bigquery`][cloud-bigquery-ref]
-[Logging][cloud-logging] | beta | [`cloud.google.com/go/logging`][cloud-logging-ref]
-[Pub/Sub][cloud-pubsub] | alpha | [`cloud.google.com/go/pubsub`][cloud-pubsub-ref]
-[Vision][cloud-vision] | beta | [`cloud.google.com/go/vision`][cloud-vision-ref]
-[Language][cloud-language] | alpha | [`cloud.google.com/go/language/apiv1`][cloud-language-ref]
-[Speech][cloud-speech] | alpha | [`cloud.google.com/go/speech/apiv1beta`][cloud-speech-ref]
-[Spanner][cloud-spanner] | alpha | [`cloud.google.com/go/spanner`][cloud-spanner-ref]
+Google API | Status | Package
+---------------------------------|--------------|-----------------------------------------------------------
+[Datastore][cloud-datastore] | stable | [`cloud.google.com/go/datastore`][cloud-datastore-ref]
+[Storage][cloud-storage] | stable | [`cloud.google.com/go/storage`][cloud-storage-ref]
+[Bigtable][cloud-bigtable] | beta | [`cloud.google.com/go/bigtable`][cloud-bigtable-ref]
+[BigQuery][cloud-bigquery] | beta | [`cloud.google.com/go/bigquery`][cloud-bigquery-ref]
+[Logging][cloud-logging] | stable | [`cloud.google.com/go/logging`][cloud-logging-ref]
+[Monitoring][cloud-monitoring] | alpha | [`cloud.google.com/go/monitoring/apiv3`][cloud-monitoring-ref]
+[Pub/Sub][cloud-pubsub] | beta | [`cloud.google.com/go/pubsub`][cloud-pubsub-ref]
+[Vision][cloud-vision] | beta | [`cloud.google.com/go/vision/apiv1`][cloud-vision-ref]
+[Language][cloud-language] | beta | [`cloud.google.com/go/language/apiv1`][cloud-language-ref]
+[Speech][cloud-speech] | beta | [`cloud.google.com/go/speech/apiv1`][cloud-speech-ref]
+[Spanner][cloud-spanner] | beta | [`cloud.google.com/go/spanner`][cloud-spanner-ref]
+[Translation][cloud-translation] | stable | [`cloud.google.com/go/translate`][cloud-translation-ref]
+[Trace][cloud-trace] | alpha | [`cloud.google.com/go/trace`][cloud-trace-ref]
+[Video Intelligence][cloud-video]| beta | [`cloud.google.com/go/videointelligence/apiv1beta1`][cloud-video-ref]
+[ErrorReporting][cloud-errors] | alpha | [`cloud.google.com/go/errorreporting`][cloud-errors-ref]
> **Alpha status**: the API is still being actively developed. As a
@@ -215,6 +144,7 @@ By default, each API will use [Google Application Default Credentials][default-c
for authorization credentials used in calling the API endpoints. This will allow your
application to run in many environments without requiring explicit configuration.
+[snip]:# (auth)
```go
client, err := storage.NewClient(ctx)
```
@@ -225,6 +155,7 @@ pass
[`option.WithServiceAccountFile`](https://godoc.org/google.golang.org/api/option#WithServiceAccountFile)
to the `NewClient` function of the desired package. For example:
+[snip]:# (auth-JSON)
```go
client, err := storage.NewClient(ctx, option.WithServiceAccountFile("path/to/keyfile.json"))
```
@@ -234,6 +165,7 @@ You can exert more control over authorization by using the
create an `oauth2.TokenSource`. Then pass
[`option.WithTokenSource`](https://godoc.org/google.golang.org/api/option#WithTokenSource)
to the `NewClient` function:
+[snip]:# (auth-ts)
```go
tokenSource := ...
client, err := storage.NewClient(ctx, option.WithTokenSource(tokenSource))
@@ -251,6 +183,7 @@ client, err := storage.NewClient(ctx, option.WithTokenSource(tokenSource))
First create a `datastore.Client` to use throughout your application:
+[snip]:# (datastore-1)
```go
client, err := datastore.NewClient(ctx, "my-project-id")
if err != nil {
@@ -260,6 +193,7 @@ if err != nil {
Then use that client to interact with the API:
+[snip]:# (datastore-2)
```go
type Post struct {
Title string
@@ -267,8 +201,8 @@ type Post struct {
PublishedAt time.Time
}
keys := []*datastore.Key{
- datastore.NewKey(ctx, "Post", "post1", 0, nil),
- datastore.NewKey(ctx, "Post", "post2", 0, nil),
+ datastore.NameKey("Post", "post1", nil),
+ datastore.NameKey("Post", "post2", nil),
}
posts := []*Post{
{Title: "Post 1", Body: "...", PublishedAt: time.Now()},
@@ -290,6 +224,7 @@ if _, err := client.PutMulti(ctx, keys, posts); err != nil {
First create a `storage.Client` to use throughout your application:
+[snip]:# (storage-1)
```go
client, err := storage.NewClient(ctx)
if err != nil {
@@ -297,6 +232,7 @@ if err != nil {
}
```
+[snip]:# (storage-2)
```go
// Read the object1 from bucket.
rc, err := client.Bucket("bucket").Object("object1").NewReader(ctx)
@@ -321,6 +257,7 @@ if err != nil {
First create a `pubsub.Client` to use throughout your application:
+[snip]:# (pubsub-1)
```go
client, err := pubsub.NewClient(ctx, "project-id")
if err != nil {
@@ -330,36 +267,30 @@ if err != nil {
Then use the client to publish and subscribe:
+[snip]:# (pubsub-2)
```go
// Publish "hello world" on topic1.
topic := client.Topic("topic1")
-msgIDs, err := topic.Publish(ctx, &pubsub.Message{
+res := topic.Publish(ctx, &pubsub.Message{
Data: []byte("hello world"),
})
+// The publish happens asynchronously.
+// Later, you can get the result from res:
+...
+msgID, err := res.Get(ctx)
if err != nil {
log.Fatal(err)
}
-// Create an iterator to pull messages via subscription1.
-it, err := client.Subscription("subscription1").Pull(ctx)
+// Use a callback to receive messages via subscription1.
+sub := client.Subscription("subscription1")
+err = sub.Receive(ctx, func(ctx context.Context, m *pubsub.Message) {
+ fmt.Println(m.Data)
+ m.Ack() // Acknowledge that we've consumed the message.
+})
if err != nil {
log.Println(err)
}
-defer it.Stop()
-
-// Consume N messages from the iterator.
-for i := 0; i < N; i++ {
- msg, err := it.Next()
- if err == iterator.Done {
- break
- }
- if err != nil {
- log.Fatalf("Failed to retrieve message: %v", err)
- }
-
- fmt.Printf("Message %d: %s\n", i, msg.Data)
- msg.Done(true) // Acknowledge that we've consumed the message.
-}
```
## Cloud BigQuery [![GoDoc](https://godoc.org/cloud.google.com/go/bigquery?status.svg)](https://godoc.org/cloud.google.com/go/bigquery)
@@ -372,13 +303,16 @@ for i := 0; i < N; i++ {
### Example Usage
First create a `bigquery.Client` to use throughout your application:
+[snip]:# (bq-1)
```go
c, err := bigquery.NewClient(ctx, "my-project-ID")
if err != nil {
- // TODO: Handle error.
+ // TODO: Handle error.
}
```
+
Then use that client to interact with the API:
+[snip]:# (bq-2)
```go
// Construct a query.
q := c.Query(`
@@ -391,19 +325,19 @@ q := c.Query(`
// Execute the query.
it, err := q.Read(ctx)
if err != nil {
- // TODO: Handle error.
+ // TODO: Handle error.
}
// Iterate through the results.
for {
- var values []bigquery.Value
- err := it.Next(&values)
- if err == iterator.Done {
- break
- }
- if err != nil {
- // TODO: Handle error.
- }
- fmt.Println(values)
+ var values []bigquery.Value
+ err := it.Next(&values)
+ if err == iterator.Done {
+ break
+ }
+ if err != nil {
+ // TODO: Handle error.
+ }
+ fmt.Println(values)
}
```
@@ -418,29 +352,32 @@ for {
### Example Usage
First create a `logging.Client` to use throughout your application:
-
+[snip]:# (logging-1)
```go
ctx := context.Background()
client, err := logging.NewClient(ctx, "my-project")
if err != nil {
- // TODO: Handle error.
+ // TODO: Handle error.
}
```
+
Usually, you'll want to add log entries to a buffer to be periodically flushed
(automatically and asynchronously) to the Stackdriver Logging service.
+[snip]:# (logging-2)
```go
logger := client.Logger("my-log")
logger.Log(logging.Entry{Payload: "something happened!"})
```
+
Close your client before your program exits, to flush any buffered log entries.
+[snip]:# (logging-3)
```go
err = client.Close()
if err != nil {
- // TODO: Handle error.
+ // TODO: Handle error.
}
```
-
## Cloud Spanner [![GoDoc](https://godoc.org/cloud.google.com/go/spanner?status.svg)](https://godoc.org/cloud.google.com/go/spanner)
- [About Cloud Spanner][cloud-spanner]
@@ -451,26 +388,28 @@ if err != nil {
First create a `spanner.Client` to use throughout your application:
+[snip]:# (spanner-1)
```go
client, err := spanner.NewClient(ctx, "projects/P/instances/I/databases/D")
if err != nil {
- log.Fatal(err)
+ log.Fatal(err)
}
```
+[snip]:# (spanner-2)
```go
// Simple Reads And Writes
-_, err := client.Apply(ctx, []*spanner.Mutation{
- spanner.Insert("Users",
- []string{"name", "email"},
- []interface{}{"alice", "a@example.com"})})
+_, err = client.Apply(ctx, []*spanner.Mutation{
+ spanner.Insert("Users",
+ []string{"name", "email"},
+ []interface{}{"alice", "a@example.com"})})
if err != nil {
- log.Fatal(err)
+ log.Fatal(err)
}
row, err := client.Single().ReadRow(ctx, "Users",
- spanner.Key{"alice"}, []string{"email"})
+ spanner.Key{"alice"}, []string{"email"})
if err != nil {
- log.Fatal(err)
+ log.Fatal(err)
}
```
@@ -512,17 +451,32 @@ for more information.
[cloud-logging-docs]: https://cloud.google.com/logging/docs
[cloud-logging-ref]: https://godoc.org/cloud.google.com/go/logging
-[cloud-vision]: https://cloud.google.com/vision/
-[cloud-vision-ref]: https://godoc.org/cloud.google.com/go/vision
+[cloud-monitoring]: https://cloud.google.com/monitoring/
+[cloud-monitoring-ref]: https://godoc.org/cloud.google.com/go/monitoring/apiv3
+
+[cloud-vision]: https://cloud.google.com/vision
+[cloud-vision-ref]: https://godoc.org/cloud.google.com/go/vision/apiv1
[cloud-language]: https://cloud.google.com/natural-language
[cloud-language-ref]: https://godoc.org/cloud.google.com/go/language/apiv1
[cloud-speech]: https://cloud.google.com/speech
-[cloud-speech-ref]: https://godoc.org/cloud.google.com/go/speech/apiv1beta1
+[cloud-speech-ref]: https://godoc.org/cloud.google.com/go/speech/apiv1
[cloud-spanner]: https://cloud.google.com/spanner/
[cloud-spanner-ref]: https://godoc.org/cloud.google.com/go/spanner
[cloud-spanner-docs]: https://cloud.google.com/spanner/docs
+[cloud-translation]: https://cloud.google.com/translation
+[cloud-translation-ref]: https://godoc.org/cloud.google.com/go/translation
+
+[cloud-trace]: https://cloud.google.com/trace/
+[cloud-trace-ref]: https://godoc.org/cloud.google.com/go/trace
+
+[cloud-video]: https://cloud.google.com/video-intelligence/
+[cloud-video-ref]: https://godoc.org/cloud.google.com/go/videointelligence/apiv1beta1
+
+[cloud-errors]: https://cloud.google.com/error-reporting/
+[cloud-errors-ref]: https://godoc.org/cloud.google.com/go/errorreporting
+
[default-creds]: https://developers.google.com/identity/protocols/application-default-credentials
diff --git a/vendor/cloud.google.com/go/compute/metadata/metadata.go b/vendor/cloud.google.com/go/compute/metadata/metadata.go
index f9d2bef6c..e708c031b 100644
--- a/vendor/cloud.google.com/go/compute/metadata/metadata.go
+++ b/vendor/cloud.google.com/go/compute/metadata/metadata.go
@@ -34,8 +34,6 @@ import (
"golang.org/x/net/context"
"golang.org/x/net/context/ctxhttp"
-
- "cloud.google.com/go/internal"
)
const (
@@ -48,6 +46,8 @@ const (
// This is variable name is not defined by any spec, as far as
// I know; it was made up for the Go package.
metadataHostEnv = "GCE_METADATA_HOST"
+
+ userAgent = "gcloud-golang/0.1"
)
type cachedValue struct {
@@ -65,24 +65,20 @@ var (
var (
metaClient = &http.Client{
- Transport: &internal.Transport{
- Base: &http.Transport{
- Dial: (&net.Dialer{
- Timeout: 2 * time.Second,
- KeepAlive: 30 * time.Second,
- }).Dial,
- ResponseHeaderTimeout: 2 * time.Second,
- },
+ Transport: &http.Transport{
+ Dial: (&net.Dialer{
+ Timeout: 2 * time.Second,
+ KeepAlive: 30 * time.Second,
+ }).Dial,
+ ResponseHeaderTimeout: 2 * time.Second,
},
}
subscribeClient = &http.Client{
- Transport: &internal.Transport{
- Base: &http.Transport{
- Dial: (&net.Dialer{
- Timeout: 2 * time.Second,
- KeepAlive: 30 * time.Second,
- }).Dial,
- },
+ Transport: &http.Transport{
+ Dial: (&net.Dialer{
+ Timeout: 2 * time.Second,
+ KeepAlive: 30 * time.Second,
+ }).Dial,
},
}
)
@@ -132,6 +128,7 @@ func getETag(client *http.Client, suffix string) (value, etag string, err error)
url := "http://" + host + "/computeMetadata/v1/" + suffix
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("Metadata-Flavor", "Google")
+ req.Header.Set("User-Agent", userAgent)
res, err := client.Do(req)
if err != nil {
return "", "", err
@@ -202,7 +199,9 @@ func testOnGCE() bool {
// Try two strategies in parallel.
// See https://github.com/GoogleCloudPlatform/google-cloud-go/issues/194
go func() {
- res, err := ctxhttp.Get(ctx, metaClient, "http://"+metadataIP)
+ req, _ := http.NewRequest("GET", "http://"+metadataIP, nil)
+ req.Header.Set("User-Agent", userAgent)
+ res, err := ctxhttp.Do(ctx, metaClient, req)
if err != nil {
resc <- false
return
diff --git a/vendor/cloud.google.com/go/internal/cloud.go b/vendor/cloud.google.com/go/internal/cloud.go
deleted file mode 100644
index 8e0c8f8e5..000000000
--- a/vendor/cloud.google.com/go/internal/cloud.go
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2014 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-// Package internal provides support for the cloud packages.
-//
-// Users should not import this package directly.
-package internal
-
-import (
- "fmt"
- "net/http"
-)
-
-const userAgent = "gcloud-golang/0.1"
-
-// Transport is an http.RoundTripper that appends Google Cloud client's
-// user-agent to the original request's user-agent header.
-type Transport struct {
- // TODO(bradfitz): delete internal.Transport. It's too wrappy for what it does.
- // Do User-Agent some other way.
-
- // Base is the actual http.RoundTripper
- // requests will use. It must not be nil.
- Base http.RoundTripper
-}
-
-// RoundTrip appends a user-agent to the existing user-agent
-// header and delegates the request to the base http.RoundTripper.
-func (t *Transport) RoundTrip(req *http.Request) (*http.Response, error) {
- req = cloneRequest(req)
- ua := req.Header.Get("User-Agent")
- if ua == "" {
- ua = userAgent
- } else {
- ua = fmt.Sprintf("%s %s", ua, userAgent)
- }
- req.Header.Set("User-Agent", ua)
- return t.Base.RoundTrip(req)
-}
-
-// cloneRequest returns a clone of the provided *http.Request.
-// The clone is a shallow copy of the struct and its Header map.
-func cloneRequest(r *http.Request) *http.Request {
- // shallow copy of the struct
- r2 := new(http.Request)
- *r2 = *r
- // deep copy of the Header
- r2.Header = make(http.Header)
- for k, s := range r.Header {
- r2.Header[k] = s
- }
- return r2
-}
diff --git a/vendor/cloud.google.com/go/internal/retry.go b/vendor/cloud.google.com/go/internal/retry.go
deleted file mode 100644
index 79995be4c..000000000
--- a/vendor/cloud.google.com/go/internal/retry.go
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package internal
-
-import (
- "fmt"
- "time"
-
- gax "github.com/googleapis/gax-go"
-
- "golang.org/x/net/context"
-)
-
-// Retry calls the supplied function f repeatedly according to the provided
-// backoff parameters. It returns when one of the following occurs:
-// When f's first return value is true, Retry immediately returns with f's second
-// return value.
-// When the provided context is done, Retry returns with ctx.Err().
-func Retry(ctx context.Context, bo gax.Backoff, f func() (stop bool, err error)) error {
- return retry(ctx, bo, f, gax.Sleep)
-}
-
-func retry(ctx context.Context, bo gax.Backoff, f func() (stop bool, err error),
- sleep func(context.Context, time.Duration) error) error {
- var lastErr error
- for {
- stop, err := f()
- if stop {
- return err
- }
- // Remember the last "real" error from f.
- if err != nil && err != context.Canceled && err != context.DeadlineExceeded {
- lastErr = err
- }
- p := bo.Pause()
- if cerr := sleep(ctx, p); cerr != nil {
- if lastErr != nil {
- return fmt.Errorf("%v; last function err: %v", cerr, lastErr)
- }
- return cerr
- }
- }
-}
diff --git a/vendor/cloud.google.com/go/internal/retry_test.go b/vendor/cloud.google.com/go/internal/retry_test.go
deleted file mode 100644
index 590b55508..000000000
--- a/vendor/cloud.google.com/go/internal/retry_test.go
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2016 Google Inc. All Rights Reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package internal
-
-import (
- "errors"
- "testing"
- "time"
-
- "golang.org/x/net/context"
-
- gax "github.com/googleapis/gax-go"
-)
-
-func TestRetry(t *testing.T) {
- ctx := context.Background()
- // Without a context deadline, retry will run until the function
- // says not to retry any more.
- n := 0
- endRetry := errors.New("end retry")
- err := retry(ctx, gax.Backoff{},
- func() (bool, error) {
- n++
- if n < 10 {
- return false, nil
- }
- return true, endRetry
- },
- func(context.Context, time.Duration) error { return nil })
- if got, want := err, endRetry; got != want {
- t.Errorf("got %v, want %v", err, endRetry)
- }
- if n != 10 {
- t.Errorf("n: got %d, want %d", n, 10)
- }
-
- // If the context has a deadline, sleep will return an error
- // and end the function.
- n = 0
- err = retry(ctx, gax.Backoff{},
- func() (bool, error) { return false, nil },
- func(context.Context, time.Duration) error {
- n++
- if n < 10 {
- return nil
- }
- return context.DeadlineExceeded
- })
- if err == nil {
- t.Error("got nil, want error")
- }
-}
diff --git a/vendor/cloud.google.com/go/key.json.enc b/vendor/cloud.google.com/go/key.json.enc
index 2f673a84b..a8978a901 100644
--- a/vendor/cloud.google.com/go/key.json.enc
+++ b/vendor/cloud.google.com/go/key.json.enc
Binary files differ
diff --git a/vendor/cloud.google.com/go/old-news.md b/vendor/cloud.google.com/go/old-news.md
index 718dd00ed..7b3ee4448 100644
--- a/vendor/cloud.google.com/go/old-news.md
+++ b/vendor/cloud.google.com/go/old-news.md
@@ -1,3 +1,142 @@
+_March 17, 2017_
+
+Breaking Pubsub changes.
+* Publish is now asynchronous
+([announcement](https://groups.google.com/d/topic/google-api-go-announce/aaqRDIQ3rvU/discussion)).
+* Subscription.Pull replaced by Subscription.Receive, which takes a callback ([announcement](https://groups.google.com/d/topic/google-api-go-announce/8pt6oetAdKc/discussion)).
+* Message.Done replaced with Message.Ack and Message.Nack.
+
+_February 14, 2017_
+
+Release of a client library for Spanner. See
+the
+[blog post](https://cloudplatform.googleblog.com/2017/02/introducing-Cloud-Spanner-a-global-database-service-for-mission-critical-applications.html).
+
+Note that although the Spanner service is beta, the Go client library is alpha.
+
+_December 12, 2016_
+
+Beta release of BigQuery, DataStore, Logging and Storage. See the
+[blog post](https://cloudplatform.googleblog.com/2016/12/announcing-new-google-cloud-client.html).
+
+Also, BigQuery now supports structs. Read a row directly into a struct with
+`RowIterator.Next`, and upload a row directly from a struct with `Uploader.Put`.
+You can also use field tags. See the [package documentation][cloud-bigquery-ref]
+for details.
+
+_December 5, 2016_
+
+More changes to BigQuery:
+
+* The `ValueList` type was removed. It is no longer necessary. Instead of
+ ```go
+ var v ValueList
+ ... it.Next(&v) ..
+ ```
+ use
+
+ ```go
+ var v []Value
+ ... it.Next(&v) ...
+ ```
+
+* Previously, repeatedly calling `RowIterator.Next` on the same `[]Value` or
+ `ValueList` would append to the slice. Now each call resets the size to zero first.
+
+* Schema inference will infer the SQL type BYTES for a struct field of
+ type []byte. Previously it inferred STRING.
+
+* The types `uint`, `uint64` and `uintptr` are no longer supported in schema
+ inference. BigQuery's integer type is INT64, and those types may hold values
+ that are not correctly represented in a 64-bit signed integer.
+
+* The SQL types DATE, TIME and DATETIME are now supported. They correspond to
+ the `Date`, `Time` and `DateTime` types in the new `cloud.google.com/go/civil`
+ package.
+
+_November 17, 2016_
+
+Change to BigQuery: values from INTEGER columns will now be returned as int64,
+not int. This will avoid errors arising from large values on 32-bit systems.
+
+_November 8, 2016_
+
+New datastore feature: datastore now encodes your nested Go structs as Entity values,
+instead of a flattened list of the embedded struct's fields.
+This means that you may now have twice-nested slices, eg.
+```go
+type State struct {
+ Cities []struct{
+ Populations []int
+ }
+}
+```
+
+See [the announcement](https://groups.google.com/forum/#!topic/google-api-go-announce/79jtrdeuJAg) for
+more details.
+
+_November 8, 2016_
+
+Breaking changes to datastore: contexts no longer hold namespaces; instead you
+must set a key's namespace explicitly. Also, key functions have been changed
+and renamed.
+
+* The WithNamespace function has been removed. To specify a namespace in a Query, use the Query.Namespace method:
+ ```go
+ q := datastore.NewQuery("Kind").Namespace("ns")
+ ```
+
+* All the fields of Key are exported. That means you can construct any Key with a struct literal:
+ ```go
+ k := &Key{Kind: "Kind", ID: 37, Namespace: "ns"}
+ ```
+
+* As a result of the above, the Key methods Kind, ID, d.Name, Parent, SetParent and Namespace have been removed.
+
+* `NewIncompleteKey` has been removed, replaced by `IncompleteKey`. Replace
+ ```go
+ NewIncompleteKey(ctx, kind, parent)
+ ```
+ with
+ ```go
+ IncompleteKey(kind, parent)
+ ```
+ and if you do use namespaces, make sure you set the namespace on the returned key.
+
+* `NewKey` has been removed, replaced by `NameKey` and `IDKey`. Replace
+ ```go
+ NewKey(ctx, kind, name, 0, parent)
+ NewKey(ctx, kind, "", id, parent)
+ ```
+ with
+ ```go
+ NameKey(kind, name, parent)
+ IDKey(kind, id, parent)
+ ```
+ and if you do use namespaces, make sure you set the namespace on the returned key.
+
+* The `Done` variable has been removed. Replace `datastore.Done` with `iterator.Done`, from the package `google.golang.org/api/iterator`.
+
+* The `Client.Close` method will have a return type of error. It will return the result of closing the underlying gRPC connection.
+
+See [the announcement](https://groups.google.com/forum/#!topic/google-api-go-announce/hqXtM_4Ix-0) for
+more details.
+
+_October 27, 2016_
+
+Breaking change to bigquery: `NewGCSReference` is now a function,
+not a method on `Client`.
+
+New bigquery feature: `Table.LoaderFrom` now accepts a `ReaderSource`, enabling
+loading data into a table from a file or any `io.Reader`.
+
+_October 21, 2016_
+
+Breaking change to pubsub: removed `pubsub.Done`.
+
+Use `iterator.Done` instead, where `iterator` is the package
+`google.golang.org/api/iterator`.
+
_October 19, 2016_
Breaking changes to cloud.google.com/go/bigquery:
diff --git a/vendor/cloud.google.com/go/run-tests.sh b/vendor/cloud.google.com/go/run-tests.sh
new file mode 100755
index 000000000..ac0b66a7a
--- /dev/null
+++ b/vendor/cloud.google.com/go/run-tests.sh
@@ -0,0 +1,86 @@
+#!/bin/bash
+
+# Selectively run tests for this repo, based on what has changed
+# in a commit. Runs short tests for the whole repo, and full tests
+# for changed directories.
+
+set -e
+
+prefix=cloud.google.com/go
+
+dryrun=false
+if [[ $1 == "-n" ]]; then
+ dryrun=true
+ shift
+fi
+
+if [[ $1 == "" ]]; then
+ echo >&2 "usage: $0 [-n] COMMIT"
+ exit 1
+fi
+
+# Files or directories that cause all tests to run if modified.
+declare -A run_all
+run_all=([.travis.yml]=1 [run-tests.sh]=1)
+
+function run {
+ if $dryrun; then
+ echo $*
+ else
+ (set -x; $*)
+ fi
+}
+
+
+# Find all the packages that have changed in this commit.
+declare -A changed_packages
+
+for f in $(git diff-tree --no-commit-id --name-only -r $1); do
+ if [[ ${run_all[$f]} == 1 ]]; then
+ # This change requires a full test. Do it and exit.
+ run go test -race -v $prefix/...
+ exit
+ fi
+ # Map, e.g., "spanner/client.go" to "$prefix/spanner".
+ d=$(dirname $f)
+ if [[ $d == "." ]]; then
+ pkg=$prefix
+ else
+ pkg=$prefix/$d
+ fi
+ changed_packages[$pkg]=1
+done
+
+echo "changed packages: ${!changed_packages[*]}"
+
+
+# Reports whether its argument, a package name, depends (recursively)
+# on a changed package.
+function depends_on_changed_package {
+ # According to go list, a package does not depend on itself, so
+ # we test that separately.
+ if [[ ${changed_packages[$1]} == 1 ]]; then
+ return 0
+ fi
+ for dep in $(go list -f '{{range .Deps}}{{.}} {{end}}' $1); do
+ if [[ ${changed_packages[$dep]} == 1 ]]; then
+ return 0
+ fi
+ done
+ return 1
+}
+
+# Collect the packages into two separate lists. (It is faster go test a list of
+# packages than to individually go test each one.)
+
+shorts=
+fulls=
+for pkg in $(go list $prefix/...); do # for each package in the repo
+ if depends_on_changed_package $pkg; then # if it depends on a changed package
+ fulls="$fulls $pkg" # run the full test
+ else # otherwise
+ shorts="$shorts $pkg" # run the short test
+ fi
+done
+run go test -race -v -short $shorts
+run go test -race -v $fulls