Giter Site home page Giter Site logo

google / go-cloud Goto Github PK

View Code? Open in Web Editor NEW
9.4K 221.0 789.0 38.72 MB

The Go Cloud Development Kit (Go CDK): A library and tools for open cloud development in Go.

Home Page: https://gocloud.dev/

License: Apache License 2.0

Go 96.98% Shell 1.33% HCL 0.90% HTML 0.34% CSS 0.45%
cloud golang portable server multi-cloud hybrid-cloud go aws gcp azure

go-cloud's Introduction

The Go Cloud Development Kit (Go CDK)

Write once, run on any cloud ☁️

Build Status Go Report Card PkgGoDev Coverage GitHub go.mod Go version License

The Go Cloud Development Kit (Go CDK) allows Go application developers to seamlessly deploy cloud applications on any combination of cloud providers. It does this by providing stable, idiomatic interfaces for common uses like storage and databases. Think database/sql for cloud products.

Imagine writing this to read from blob storage (like Google Cloud Storage or S3):

ctx := context.Background()
bucket, err := blob.OpenBucket(ctx, "s3://my-bucket")
if err != nil {
    return err
}
defer bucket.Close()
blobReader, err := bucket.NewReader(ctx, "my-blob", nil)
if err != nil {
    return err
}

and being able to run that code on any cloud you want, avoiding all the ceremony of cloud-specific authorization, tracing, SDKs and all the other code required to make an application portable across cloud platforms.

The project works well with a code generator called Wire. It creates human-readable code that only imports the cloud SDKs for services you use. This allows the Go CDK to grow to support any number of cloud services, without increasing compile times or binary sizes, and avoiding any side effects from init() functions.

You can learn more about the project from our announcement blog post, or our talk at Next 2018:

Video: Building Go Applications for the Open Cloud (Cloud Next '18)

Installation

# First "cd" into your project directory if you have one to ensure "go get" uses
# Go modules (or not) appropriately. See "go help modules" for more info.
go get gocloud.dev

The Go CDK builds at the latest stable release of Go. Previous Go versions may compile but are not supported.

Documentation

Documentation for the project lives primarily on https://gocloud.dev/, including tutorials.

You can also browse Go package reference on pkg.go.dev.

Project status

The APIs are still in alpha, but we think they are production-ready and are actively looking for feedback from early adopters. If you have comments or questions please open an issue.

At this time we prefer to focus on maintaining the existing APIs and drivers, and are unlikely to accept new ones into the go-cloud repository. The modular nature of the Go CDK makes it simple to host new APIs and drivers for existing APIs externally, in separate repositories.

If you have a new API or driver that you believe are important and mature enough to be included, feel free to open an issue to discuss this; our default will likely be to suggest starting in a separate repository. We'll also be happy to maintain a list of such external APIs and drivers in this README.

Current features

The Go CDK provides generic APIs for:

  • Unstructured binary (blob) storage
  • Publish/Subscribe (pubsub)
  • Variables that change at runtime (runtimevar)
  • Connecting to MySQL and PostgreSQL databases (mysql, postgres)
  • Server startup and diagnostics: request logging, tracing, and health checking (server)

Contributing

Thank you for your interest in contributing to the Go Cloud Development Kit! ❤️

Everyone is welcome to contribute, whether it's in the form of code, documentation, bug reports, feature requests, or anything else. We encourage you to experiment with the Go CDK and make contributions to help evolve it to meet your needs!

The GitHub repository at google/go-cloud contains some driver implementations for each portable API. We intend to include Google Cloud Platform, Amazon Web Services, and Azure implementations, as well as prominent open source services and at least one implementation suitable for use in local testing. Unfortunately, we cannot support every service directly from the project; however, we encourage contributions in separate repositories.

If you create a repository that implements the Go CDK interfaces for other services, let us know! We would be happy to link to it here and give you a heads-up before making any breaking changes.

See the contributing guide for more details.

Community

This project is covered by the Go Code of Conduct.

Legal disclaimer

The Go CDK is open-source and released under an Apache 2.0 License. Copyright © 2018–2019 The Go Cloud Development Kit Authors.

If you are looking for the website of GoCloud Systems, which is unrelated to the Go CDK, visit https://gocloud.systems.

go-cloud's People

Contributors

alexsn avatar bamnet avatar bartventer avatar bvwells avatar cflewis avatar clausti avatar eliben avatar enocom avatar felipeweb avatar garukun avatar ijt avatar jba avatar johejo avatar ktr0731 avatar mark-kubacki avatar multiply avatar polinasok avatar richardartoul avatar rolinh avatar shantuo avatar stanhu avatar szaher avatar tbpg avatar testwill avatar the108 avatar vangent avatar vsaroopchand avatar vsekhar avatar zombiezen avatar zyqsempai avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

go-cloud's Issues

server/sdserver: enable cloud profiler

EDIT 2019-07-09 to add additional context

Is your feature request related to a problem? Please describe.

If a user uses the Go CDK server package, they currently have to manually configure sending profiler information to Stackdriver Profiler.

Describe the solution you'd like

The sdserver package should have an option to permit profiling information to be sent to Stackdriver Profiler.

The Stackdriver Profiler for Go can be configured to be very low-overhead so as to be turned on by default. We should turn it on at server start using the server.Options.Driver field.

Additional Context

Instructions for setting up the profiling agent are at https://cloud.google.com/profiler/docs/profiling-go, and the relevant code.

runtimevar/paramstore: Watch returns same value multiple times

Reproduction case

package main

import (
    "context"
    "log"
    "time"

    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/google/go-cloud/runtimevar"
    "github.com/google/go-cloud/runtimevar/paramstore"
)

func main() {
    ctx := context.Background()
    sess := session.Must(session.NewSession())
    client := paramstore.NewClient(ctx, sess)
    v, err := client.NewVariable(ctx, "/foo/bar", runtimevar.StringDecoder, &paramstore.WatchOptions{
        WaitTime: 5 * time.Second,
    })
    for {
        snapshot, err := v.Watch(ctx)
        if err != nil {
            log.Println("Watch error:", err)
        }
        log.Println("Value is now:", snapshot.Value)
    }
}

Run with:

$ aws ssm put-parameter --name="/foo/bar" --type=String --value="ohai from AWS"
$ go run foo.go

Expected output

Value is now: ohai from AWS

Actual output

Value is now: ohai from AWS
Value is now: ohai from AWS
Value is now: ohai from AWS

Move cloud provider implementations to dedicated repositories

Post launch. Possibly "post 1.0" of the APIs.

Generic code should import golang.org/x/cloud.

Cloud-specific code (e.g. code written to be fed into Wire) should import additional cloud-specific repositories (to be determined) to make use of pre-written wirings for GCP, AWS, etc.

runtimevar/runtimeconfigurator: add a Goose-friendly client constructor

The current runtimeconfigurator.NewClient function takes in a varargs client option, which is idiomatic for GCP clients, but is difficult to integrate into Goose. It would be good to include the client in the gcpcloud.Services set instead of pushing responsibility onto the application.

Add a linter to Travis

Linters are our first and best defense against accidents like not checking return values. This is important.

I've identified one that I like a lot:

go get -u github.com/golangci/golangci-lint/cmd/golangci-lint
golangci-lint run (find . -type d ! -path "./.git*" ! -path "./tests*" ! -path "./goose*" ! -path "*_demo*")

This shows some issues we have, so I'll need to fix those first.

all: inject error reporter

There are a number of places throughout the libraries that would like to report errors that don't really fall into typical call flow, such as during the Wire cleanup function. Typically, these should be logged somewhere, but a library should not log. To give a simple hook point that can be used to collect errors, I propose something like:

// ErrorReporter wraps the ReportError method.
//
// ReportError is called when a "background" error occurs: something that failed,
// but isn't appropriate to pass back up to a caller. It must be safe to call from multiple
// goroutines, and an implementation may retain the error past the return of ReportError.
type ErrorReporter interface {
  ReportError(error)
}

Remove transport/grpc from imports

@jba confirmed to me that google.golang.org/api/transport/grpc shouldn't be imported by end users, only the client libraries themselves. This already causes problems with the RPC replay being implemented for #16 .

blob/fileblob: support Unicode characters in key names

From a comment on PR #33:

I wanted to err on the side of ensuring that the names would be valid and not have special meaning on the filesystem. In particular, something like colon can potentially allow C:/foo.txt to do bad things on Windows. I'd be happy to open a bug to support Unicode characters and fix if there's demand.

This is that bug. @shantuo

Example test building seems to sneak past Travis

There are some example tests that don't build. Somehow they got through Travis which is odd.

$ go test -run=TestWatchReplay runtimevar/runtimeconfigurator/*.go
# command-line-arguments_test
runtimevar/runtimeconfigurator/example_test.go:32:24: undefined: runtimeconfigurator.Dial
runtimevar/runtimeconfigurator/example_test.go:37:41: multiple-value runtimeconfigurator.NewClient() in single-value context
FAIL	command-line-arguments [build failed]

all: remove stutter from package names

In particular, the following packages (omitting the github.com/google/go-cloud prefix) might be renamed.

aws/awscloud      -> aws/cloud
gcp/gcpcloud      -> gcp/cloud
blob/fileblob     -> blob/file
blob/gcsblob      -> blob/gcs
blob/s3blob       -> blob/s3
health/sqlhealth  -> health/sql
server/sdsserver  -> server/sds
server/xrayserver -> server/xray

This rename would necessitate named imports when a user imports both aws/cloud and gcp/cloud for example. That seems like a reasonable tradeoff for a better package name, though.

Cf. Package Names.

travis: golint-ci fails build due to "unused" provider sets in package main

While testing a PR, I noticed that Travis flagged a Wire provider set as an unused variable (source):

samples/guestbook/main.go:269:5: `appSet` is unused (varcheck)
var appSet = wire.NewSet(
    ^

This is technically correct, but not an actual issue, and it did cause the build to fail, thus blocking submission. Based on recommendation from @cflewis, I'm disabling varcheck as a temporary workaround, then keeping this open for solving the underlying issue.

blob: add reading/writing of Content-Type

This came up in trying to write a sample application that proxies blob access. For both GCS and S3, the services support setting a Content-Type header that can be accessed later. We should extend the blob interface to allow reading and writing of metadata beyond just Size.

travis: only run affected tests on PR checks

It would be nice to have PR Travis builds only run the tests for any affected packages for the files touched, then leave the master branch build to run all tests. The benefit would be to decrease the presubmit latency, since running less tests also means less dependencies to download. I'm not sure if this has been done before, but it seems like all the information is there in the Go tool and Travis to do subsetting like this.

/cc @cflewis

travis: set up continuous integration

Now that we're using GitHub, let's set up a Travis build. This should likely be running in replay mode for pull requests, and we may want to investigate using the real production projects for master builds.

samples/guestbook: add note about needing a public SSH key for AWS

After running terraform apply as part of the steps to provision infrastructure on AWS in the guestbook sample, terraform prompts me for a public SSH key:

var.ssh_public_key
  A public key line in .ssh/authorized_keys format to use to authenticate to your instance. This must be added to your SSH agent for provisioning to succeed.

  Enter a value:

We should add a note in the README which explains what the SSH key will be used for and how to create a key and find it.

blob/gcsblob: add HTTP replay tests

There's a few tests here, but it would be good to write some HTTP replay tests that exercise the GCS blob API. This can probably borrow structure from the fileblob tests.

testing: move to internal/testing

We don't really want to commit to the API surface, as it is being used to test the project itself, not for helping others tests their apps.

runtimevar/paramstore and blob/s3blob: testdata not up to date?

Steps to reproduce

$ vgo test -short ./blob/s3blob ./runtimevar/paramstore
ok      github.com/google/go-cloud/blob/s3blob  (cached)
ok      github.com/google/go-cloud/runtimevar/paramstore        0.702s
$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   blob/s3blob/testdata/blob.yaml
        modified:   runtimevar/paramstore/testdata/decoder.yaml
        modified:   runtimevar/paramstore/testdata/watch_change.yaml
        modified:   runtimevar/paramstore/testdata/watch_initial.yaml
        modified:   runtimevar/paramstore/testdata/write_read_delete.yaml

no changes added to commit (use "git add" and/or "git commit -a")

Differences appear to be the mu key and some minor YAML string encoding. I would expect this to be clean on a new checkout.

Extra info

$ git rev-parse HEAD
189ea15d728cc05309379d7991d126307dda3350
$ vgo list -m
MODULE                                                  VERSION
github.com/google/go-cloud                              -
cloud.google.com/go                                     v0.21.0
contrib.go.opencensus.io/exporter/stackdriver           v0.0.0-20180421005815-665cf5131b71
github.com/GoogleCloudPlatform/cloudsql-proxy           v0.0.0-20180321230639-1e456b1c68cb
github.com/aws/aws-sdk-go                               v1.13.20
github.com/beorn7/perks                                 v0.0.0-20180321164747-3a771d992973
github.com/bgentry/speakeasy                            v0.0.0-20170417200703-4aabc24848ce
github.com/census-ecosystem/opencensus-go-exporter-aws  v0.0.0-20180411051634-41633bc1ff6b
github.com/coreos/bbolt                                 v0.0.0-20171207012708-48ea1b39c25f
github.com/coreos/etcd                                  v0.0.0-20180424190529-fdde8705f5bf
github.com/coreos/go-semver                             v0.2.0
github.com/coreos/go-systemd                            v0.0.0-20170731111925-d21964639418
github.com/coreos/pkg                                   v0.0.0-20160727233714-3ac0863d7acf
github.com/cpuguy83/go-md2man                           v0.0.0-20170603125239-23709d084719
github.com/davecgh/go-spew                              v1.1.0
github.com/dgrijalva/jwt-go                             v0.0.0-20160616191556-d2709f9f1f31
github.com/dnaeon/go-vcr                                v0.0.0-20180504081357-f8a7e8b9c630
github.com/dustin/go-humanize                           v0.0.0-20171111073723-bb3d318650d4
github.com/fsnotify/fsnotify                            v1.4.7
github.com/ghodss/yaml                                  v0.0.0-20170327235444-0ca9ea5df545
github.com/go-ini/ini                                   v1.25.4
github.com/go-sql-driver/mysql                          v0.0.0-20180308100310-1a676ac6e4dc
github.com/gogo/protobuf                                v0.0.0-20171007142547-342cbe0a0415
github.com/golang/glog                                  v0.0.0-20160126235308-23def4e6c14b
github.com/golang/groupcache                            v0.0.0-20160516000752-02826c3e7903
github.com/golang/protobuf                              v1.0.0
github.com/google/btree                                 v0.0.0-20161005200959-925471ac9e21
github.com/google/go-cmp                                v0.2.0
github.com/googleapis/gax-go                            v0.0.0-20170915024731-317e0006254c
github.com/gorilla/mux                                  v1.6.1
github.com/gorilla/websocket                            v0.0.0-20170926233335-4201258b820c
github.com/grpc-ecosystem/go-grpc-prometheus            v0.0.0-20170826090648-0dafe0d496ea
github.com/grpc-ecosystem/grpc-gateway                  v0.0.0-20171103165559-8cc3a55af3bc
github.com/inconshreveable/mousetrap                    v0.0.0-20141017200713-76626ae9c91c
github.com/jmespath/go-jmespath                         v0.0.0-20160202185014-0b12d6b521d8
github.com/jonboulle/clockwork                          v0.0.0-20160615175015-2eee05ed7941
github.com/jtolds/gls                                   v0.0.0-20170503224851-77f18212c9c7
github.com/kr/pty                                       v0.0.0-20170307145309-2c10821df3c3
github.com/mattn/go-runewidth                           v0.0.0-20170201022620-9e777a8366cc
github.com/matttproud/golang_protobuf_extensions        v1.0.0
github.com/olekukonko/tablewriter                       v0.0.0-20170122224234-a0225b3f23b5
github.com/openzipkin/zipkin-go                         v0.1.0
github.com/pmezard/go-difflib                           v1.0.0
github.com/prometheus/client_golang                     v0.8.0
github.com/prometheus/client_model                      v0.0.0-20171117100541-99fa1f4be8e5
github.com/prometheus/common                            v0.0.0-20180413074202-d0f7cd64bda4
github.com/prometheus/procfs                            v0.0.0-20180408092902-8b1c2da0d56d
github.com/russross/blackfriday                         v0.0.0-20170728175326-4048872b16cc
github.com/shurcooL/sanitized_anchor_name               v0.0.0-20151028001915-10ef21a441db
github.com/sirupsen/logrus                              v0.0.0-20170815202055-f006c2ac4710
github.com/smartystreets/assertions                     v0.0.0-20180301161246-7678a5452ebe
github.com/smartystreets/goconvey                       v0.0.0-20180222194500-ef6db91d284a
github.com/smartystreets/gunit                          v0.0.0-20180314194857-6f0d6275bdcd
github.com/soheilhy/cmux                                v0.0.0-20170814202137-bb79a8346501
github.com/spf13/cobra                                  v0.0.0-20151124153217-1c44ec8d3f15
github.com/spf13/pflag                                  v0.0.0-20170508184408-e57e3eeb33f7
github.com/stretchr/objx                                v0.0.0-20180106011353-facf9a85c22f
github.com/stretchr/testify                             v1.2.1
github.com/tmc/grpc-websocket-proxy                     v0.0.0-20170815181823-89b8d40f7ca8
github.com/ugorji/go                                    v0.0.0-20171019201919-bdcc60b419d1
github.com/urfave/cli                                   v0.0.0-20160628053056-1efa31f08b93
github.com/xiang90/probing                              v0.0.0-20160813154853-07dd2e8dfe18
go.opencensus.io                                        v0.9.0
go.uber.org/atomic                                      v0.0.0-20171114204401-8474b86a5a6f
go.uber.org/multierr                                    v0.0.0-20170630175437-3c4937480c32
go.uber.org/zap                                         v0.0.0-20170925195302-35aad584952c
golang.org/x/crypto                                     v0.0.0-20170930174604-9419663f5a44
golang.org/x/net                                        v0.0.0-20180502164142-640f4622ab69
golang.org/x/oauth2                                     v0.0.0-20180402223937-921ae394b943
golang.org/x/sync                                       v0.0.0-20180314180146-1d60e4601c6f
golang.org/x/sys                                        v0.0.0-20180329131831-378d26f46672
golang.org/x/text                                       v0.3.0
golang.org/x/time                                       v0.0.0-20170420181420-c06e80d9300e
golang.org/x/tools                                      v0.0.0-20180314180217-d853e8088c62
google.golang.org/api                                   v0.0.0-20180413000347-fca24fcb4112
google.golang.org/appengine                             v1.0.0
google.golang.org/genproto                              v0.0.0-20180409222037-51d0944304c3
google.golang.org/grpc                                  v1.11.3
gopkg.in/check.v1                                       v0.0.0-20161208181325-20d25e280405
gopkg.in/cheggaaa/pb.v1                                 v1.0.0-20160328142451-226d21d43a30
gopkg.in/yaml.v2                                        v2.2.1

samples/guestbook: terraform apply fails on AWS

Here is the error:

aws/provision-db.sh: Connecting to database...
docker: Error response from daemon: Mounts denied: 
The path /var/folders/_h/ssstsdnj2998kj4bsmlxm17w00h7cm/T/tmp.JbxaL9nU
is not shared from OS X and is not known to Docker.
You can configure shared paths from Docker -> Preferences... -> File Sharing.
See https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.
.
time="2018-06-20T14:59:52-06:00" level=error msg="error waiting for container: context canceled"
aws/provision-db.sh: Removing ingress rule...

This with a vanilla install of Docker on MacOS 10.13.4.

server: add request metrics

EDIT 2019-07-09 Adding more context to this issue:

Is your feature request related to a problem? Please describe.

Right now, a server using the Go CDK server package will automatically capture OpenCensus traces, but will not capture request metrics like opencensus.io/http/server/request_count. Go CDK servers should send these metrics out of the box.

Describe the solution you'd like

A new field on *server.Options that to initialize the metrics exporter (#13), and for the server's request handler to use ochttp.Handler.

samples/guestbook: GCP section fails on terraform apply

Terraform fails to provision GCP resources with the following errors:

Error: Error applying plan:

4 error(s) occurred:

* google_project_service.container: 1 error(s) occurred:

* google_project_service.container: Error enabling service: Error waiting for apis ["container.googleapis.com"] to be enabled for enocom-dev: googleapi: Error 403: The caller does not have permission, forbidden
* google_project_service.runtimeconfig: 1 error(s) occurred:

* google_project_service.runtimeconfig: Error enabling service: Error waiting for apis ["runtimeconfig.googleapis.com"] to be enabled for enocom-dev: googleapi: Error 403: The caller does not have permission, forbidden
* google_project_service.storage: 1 error(s) occurred:

* google_project_service.storage: Error enabling service: failed to issue request: googleapi: Error 403: The caller does not have permission, forbidden
* google_project_service.sql: 1 error(s) occurred:

* google_project_service.sql: Error enabling service: failed to issue request: googleapi: Error 403: The caller does not have permission, forbidden

This was apparently noted in hashicorp/terraform-provider-google#1579 and then fixed with hashicorp/terraform-provider-google#1632.

But the fix still isn't in the newest version of the Terraform GCP provider (v.0.14.0). Once the fix lands, we need to update this line to require the version with the fix.

goose: change API to allow potential runtime access

Since we are still in the early stages where we can break the Goose API, it's worth pushing the API to allow a runtime-based injector down the road, if we find we need it. The intent would be to store the arguments, not to actually implement anything inside the marker function package.

AFAICT, the only change needed is to make the first argument to goose.Bind take in a pointer to an interface, since otherwise the interface type would be lost by the time Bind starts. The semantics of goose.Value might be slightly weird, but the restrictions on what can be used in goose.Value should eliminate most potential problems.

Make go test work on fresh clones

I cloned this repo and then ran the following command, which I stopped after waiting 8 minutes for it to complete. Note, I'm excluding wire tests which add ~3 minutes to the test runtime.

$ time go test $(go list ./... | grep -v wire)
?       github.com/google/go-cloud/aws  [no test files]
ok      github.com/google/go-cloud/aws/awscloud (cached) [no tests to run]
ok      github.com/google/go-cloud/blob (cached)
?       github.com/google/go-cloud/blob/driver  [no test files]
ok      github.com/google/go-cloud/blob/fileblob        (cached)
ok      github.com/google/go-cloud/blob/gcsblob (cached)
^C
real    8m7.669s
user    0m4.329s
sys     0m1.283s

Compare with:

$ time go test -short $(go list ./... | grep -v wire)
?       github.com/google/go-cloud/aws  [no test files]
ok      github.com/google/go-cloud/aws/awscloud (cached) [no tests to run]
ok      github.com/google/go-cloud/blob (cached)
?       github.com/google/go-cloud/blob/driver  [no test files]
ok      github.com/google/go-cloud/blob/fileblob        (cached)
ok      github.com/google/go-cloud/blob/gcsblob (cached)
ok      github.com/google/go-cloud/blob/s3blob  (cached)
?       github.com/google/go-cloud/gcp  [no test files]
ok      github.com/google/go-cloud/gcp/gcpcloud (cached) [no tests to run]
ok      github.com/google/go-cloud/health       (cached)
ok      github.com/google/go-cloud/health/sqlhealth     (cached)
ok      github.com/google/go-cloud/mysql/cloudmysql     (cached) [no tests to run]
ok      github.com/google/go-cloud/mysql/rdsmysql       (cached) [no tests to run]
ok      github.com/google/go-cloud/requestlog   (cached)
ok      github.com/google/go-cloud/runtimevar   (cached)
?       github.com/google/go-cloud/runtimevar/driver    [no test files]
ok      github.com/google/go-cloud/runtimevar/filevar   (cached)
ok      github.com/google/go-cloud/runtimevar/paramstore        (cached)
ok      github.com/google/go-cloud/runtimevar/runtimeconfigurator       0.046s
?       github.com/google/go-cloud/server       [no test files]
?       github.com/google/go-cloud/server/sdserver      [no test files]
?       github.com/google/go-cloud/server/xrayserver    [no test files]
?       github.com/google/go-cloud/testing/replay       [no test files]
?       github.com/google/go-cloud/tests/gcp/app        [no test files]
?       github.com/google/go-cloud/tests/gcp/test-driver        [no test files]

real    0m2.455s
user    0m2.254s
sys     0m0.925s

server: install monitoring exporter

EDIT 2019-07-09 Adding more context to this issue:

Is your feature request related to a problem? Please describe.

Right now, a server using the Go CDK server package can configure the OpenCensus trace exporter, but not the metric exporter.

Describe the solution you'd like

A new field on *server.Options to initialize the metrics exporter.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.