From 13286d0626c4115990db2d86631e954c566df82e Mon Sep 17 00:00:00 2001 From: Arcturus Date: Tue, 10 Mar 2020 17:19:01 +0800 Subject: [PATCH] Refined azure pipeline, and fixed various of compile errors (#271) * 1. Move from dep to modules 2. Use golangci-lint instead of gometalinter 3. Fixed various of compilation errors 4. Remove the travis pipeline config file 5. Refined azure pipeline config * Stop using Makefile * Revert changes on test scripts * Refactor pipeline --- .azure-pipelines/lint_and_build.yml | 9 + .azure-pipelines/steps/build_test.yml | 3 + .azure-pipelines/steps/init_workspace.yml | 13 + .azure-pipelines/steps/linter_check.yml | 10 + .travis.yml | 12 - Gopkg.lock | 575 -------------------- Gopkg.toml | 31 -- Makefile | 7 - README.md | 3 - apps/tracing/Gopkg.lock | 329 ----------- apps/tracing/Gopkg.toml | 46 -- apps/tracing/go.mod | 22 + apps/tracing/go.sum | 86 +++ authorization/authorization.go | 7 +- authorization/authorization_test.go | 25 +- azure-pipelines.yml | 55 +- batch/batch.go | 6 +- batch/batch_test.go | 27 +- cdn/cdn.go | 7 +- cdn/cdn_test.go | 2 +- cognitiveservices/account.go | 7 +- cognitiveservices/cognitiveservices_test.go | 49 +- cognitiveservices/customsearch.go | 8 +- cognitiveservices/entitysearch.go | 7 +- cognitiveservices/textanalytics.go | 73 ++- cognitiveservices/websearch.go | 7 +- compute/compute_test.go | 14 +- compute/container_cluster.go | 3 +- compute/container_cluster_test.go | 8 +- compute/container_instance.go | 2 +- compute/container_instance_test.go | 2 +- compute/hybrid/compute_test.go | 24 +- compute/vm.go | 5 +- compute/vm_disk.go | 25 +- compute/vm_scale_set.go | 41 +- compute/vm_scale_set_test.go | 18 +- compute/vm_test.go | 126 ++--- compute/vm_with_availabilityset.go | 4 +- compute/vm_with_identity.go | 4 +- cosmosdb/cosmosdb.go | 3 +- cosmosdb/cosmosdb_test.go | 27 +- eventhubs/eventhubs_test.go | 9 +- eventhubs/send_events.go | 24 +- go.mod | 39 ++ go.sum | 290 ++++++++++ graphrbac/graph.go | 4 +- graphrbac/graph_test.go | 20 +- hdinsight/hdinsight_test.go | 15 +- insights/insights.go | 6 +- insights/insights_test.go | 17 +- internal/config/env.go | 14 +- internal/iam/authorizers.go | 8 +- internal/util/util.go | 9 +- keyvault/key.go | 1 - keyvault/keyvault_test.go | 12 +- keyvault/pass-manager.go | 2 +- keyvault/vault.go | 2 +- msi/msi.go | 2 +- network/hybrid/network.go | 9 +- network/hybrid/network_test.go | 21 +- network/ipaddress.go | 7 +- network/loadbalancer.go | 9 +- network/network_test.go | 40 +- network/nic.go | 7 +- network/securitygroups.go | 7 +- network/subnets.go | 7 +- network/{network.go => virtualnetwork.go} | 7 +- quickstarts/deploy-vm/main.go | 5 +- resources/cleanup.go | 9 +- resources/deployment.go | 3 +- resources/deployment_test.go | 14 +- resources/groups.go | 10 +- resources/hybrid/cleanup.go | 9 +- resources/hybrid/groups.go | 9 +- resources/hybrid/resources_test.go | 4 +- resources/provider.go | 3 +- resources/resources.go | 6 +- resources/resources_test.go | 9 +- sql/dataplane.go | 4 +- sql/sql.go | 10 - sql/sql_test.go | 20 +- storage/account.go | 15 +- storage/account_test.go | 22 +- storage/appendblob_test.go | 10 +- storage/blockblob_test.go | 14 +- storage/container_test.go | 10 +- storage/hybrid/account.go | 2 +- storage/hybrid/storage_test.go | 17 +- storage/pageblob.go | 4 +- storage/pageblob_test.go | 14 +- storage/storage_test.go | 6 +- web/web.go | 3 +- web/web_test.go | 14 +- 93 files changed, 976 insertions(+), 1590 deletions(-) create mode 100644 .azure-pipelines/lint_and_build.yml create mode 100644 .azure-pipelines/steps/build_test.yml create mode 100644 .azure-pipelines/steps/init_workspace.yml create mode 100644 .azure-pipelines/steps/linter_check.yml delete mode 100644 .travis.yml delete mode 100644 Gopkg.lock delete mode 100644 Gopkg.toml delete mode 100644 Makefile delete mode 100644 apps/tracing/Gopkg.lock delete mode 100644 apps/tracing/Gopkg.toml create mode 100644 apps/tracing/go.mod create mode 100644 apps/tracing/go.sum create mode 100644 go.mod create mode 100644 go.sum rename network/{network.go => virtualnetwork.go} (97%) diff --git a/.azure-pipelines/lint_and_build.yml b/.azure-pipelines/lint_and_build.yml new file mode 100644 index 000000000..a0924811b --- /dev/null +++ b/.azure-pipelines/lint_and_build.yml @@ -0,0 +1,9 @@ +jobs: + - job: + pool: + vmImage: 'Ubuntu 18.04' + + steps: + - template: steps/init_workspace.yml + - template: steps/linter_check.yml + - template: steps/build_test.yml \ No newline at end of file diff --git a/.azure-pipelines/steps/build_test.yml b/.azure-pipelines/steps/build_test.yml new file mode 100644 index 000000000..41bd80e43 --- /dev/null +++ b/.azure-pipelines/steps/build_test.yml @@ -0,0 +1,3 @@ +steps: + - script: go build -v $(go list ./...) + displayName: 'Build' \ No newline at end of file diff --git a/.azure-pipelines/steps/init_workspace.yml b/.azure-pipelines/steps/init_workspace.yml new file mode 100644 index 000000000..52a300779 --- /dev/null +++ b/.azure-pipelines/steps/init_workspace.yml @@ -0,0 +1,13 @@ +steps: + - script: | + mkdir -p $GOPATH + mkdir -p '$(GOPATH)/bin' + shopt -s dotglob extglob + echo '##vso[task.prependpath]$(GOROOT)/bin' + echo '##vso[task.prependpath]$(GOPATH)/bin' + displayName: 'Create Go Workspace' + - script: | + go version + curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.23.6 + golangci-lint --version + displayName: 'Install Dependencies' \ No newline at end of file diff --git a/.azure-pipelines/steps/linter_check.yml b/.azure-pipelines/steps/linter_check.yml new file mode 100644 index 000000000..1c2c9f39f --- /dev/null +++ b/.azure-pipelines/steps/linter_check.yml @@ -0,0 +1,10 @@ +steps: + - script: | + golangci-lint run --timeout=30m --disable-all \ + --enable=deadcode --enable=gocyclo --enable=golint \ + --enable=varcheck --enable=structcheck --enable=maligned \ + --enable=ineffassign --enable=interfacer --enable=unconvert \ + --enable=goconst --enable=gosec ./... >&2 + displayName: 'Linter Check' + failOnStderr: true + condition: succeededOrFailed() \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index b7893efa2..000000000 --- a/.travis.yml +++ /dev/null @@ -1,12 +0,0 @@ -sudo: required - -language: go -go: - - 1.11.x - - 1.12.x - -branches: - only: - - master - -script: make test diff --git a/Gopkg.lock b/Gopkg.lock deleted file mode 100644 index 7a16e5baf..000000000 --- a/Gopkg.lock +++ /dev/null @@ -1,575 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - digest = "1:2ca532a6bc655663344004ba102436d29031018eab236247678db1d8978627bf" - name = "cloud.google.com/go" - packages = ["civil"] - pruneopts = "" - revision = "775730d6e48254a2430366162cf6298e5368833c" - version = "v0.39.0" - -[[projects]] - digest = "1:6158256042564abf0da300ea7cb016f79ddaf24fdda2cc06c9712b0c2e06dd2a" - name = "contrib.go.opencensus.io/exporter/ocagent" - packages = ["."] - pruneopts = "" - revision = "dcb33c7f3b7cfe67e8a2cea10207ede1b7c40764" - version = "v0.4.12" - -[[projects]] - digest = "1:40c8c872ea3d3b7fc43e2e18c3fde8517f82fe93a1ce07cf89ab408442c2648a" - name = "github.com/Azure/azure-amqp-common-go" - packages = [ - ".", - "aad", - "auth", - "cbs", - "conn", - "internal", - "internal/tracing", - "log", - "persist", - "rpc", - "sas", - "uuid", - ] - pruneopts = "" - revision = "b5ea4829bce0d96bc7b4d11bfc8ccd2afdf0ec4a" - version = "v1.1.4" - -[[projects]] - digest = "1:0acf673ec1b8c98efc55869e533aa34e1409b1e70517ec7a41807a6c17827ed4" - name = "github.com/Azure/azure-event-hubs-go" - packages = [ - ".", - "atom", - "eph", - "storage", - ] - pruneopts = "" - revision = "95f9bc025a9462337f8087aa883bc9b35a1e693e" - version = "v1.3.0" - -[[projects]] - digest = "1:46c496dd18d34d9ab4202ae48ba4f9587eb397f23480e3530c07a342b67ec24a" - name = "github.com/Azure/azure-pipeline-go" - packages = ["pipeline"] - pruneopts = "" - revision = "55fedc85a614dcd0e942a66f302ae3efb83d563c" - version = "v0.1.9" - -[[projects]] - digest = "1:026de27aacbf2033be97e9ace64cd7cb815e31c2dbba822cee3825192dda8aa4" - name = "github.com/Azure/azure-sdk-for-go" - packages = [ - "profiles/2017-03-09/compute/mgmt/compute", - "profiles/2017-03-09/network/mgmt/network", - "profiles/2017-03-09/resources/mgmt/resources", - "profiles/2017-03-09/storage/mgmt/storage", - "profiles/latest/keyvault/keyvault", - "services/authorization/mgmt/2015-07-01/authorization", - "services/batch/2017-09-01.6.0/batch", - "services/batch/mgmt/2017-09-01/batch", - "services/cdn/mgmt/2017-10-12/cdn", - "services/cognitiveservices/mgmt/2017-04-18/cognitiveservices", - "services/cognitiveservices/v1.0/customsearch", - "services/cognitiveservices/v1.0/entitysearch", - "services/cognitiveservices/v1.0/imagesearch", - "services/cognitiveservices/v1.0/newssearch", - "services/cognitiveservices/v1.0/spellcheck", - "services/cognitiveservices/v1.0/videosearch", - "services/cognitiveservices/v1.0/websearch", - "services/cognitiveservices/v2.1/textanalytics", - "services/compute/mgmt/2016-03-30/compute", - "services/compute/mgmt/2018-04-01/compute", - "services/compute/mgmt/2018-06-01/compute", - "services/containerinstance/mgmt/2018-10-01/containerinstance", - "services/containerservice/mgmt/2017-09-30/containerservice", - "services/cosmos-db/mgmt/2015-04-08/documentdb", - "services/cosmos-db/mongodb", - "services/eventhub/mgmt/2017-04-01/eventhub", - "services/graphrbac/1.6/graphrbac", - "services/keyvault/2016-10-01/keyvault", - "services/keyvault/auth", - "services/keyvault/mgmt/2016-10-01/keyvault", - "services/network/mgmt/2015-06-15/network", - "services/network/mgmt/2017-09-01/network", - "services/preview/dns/mgmt/2018-03-01-preview/dns", - "services/preview/hdinsight/mgmt/2015-03-01-preview/hdinsight", - "services/preview/monitor/mgmt/2018-03-01/insights", - "services/preview/msi/mgmt/2015-08-31-preview/msi", - "services/preview/sql/mgmt/2015-05-01-preview/sql", - "services/resources/mgmt/2016-02-01/resources", - "services/resources/mgmt/2017-05-10/resources", - "services/storage/mgmt/2016-01-01/storage", - "services/storage/mgmt/2017-06-01/storage", - "services/storage/mgmt/2017-10-01/storage", - "services/web/mgmt/2016-09-01/web", - "version", - ] - pruneopts = "" - revision = "77258e94d84ea36012a72c0e0a1e2faa409c6396" - version = "v29.0.0" - -[[projects]] - digest = "1:f0dc2e8b5f53bd286e49ba57313df9d450ec1f273c59bc7b0011fd4e99eea7db" - name = "github.com/Azure/azure-storage-blob-go" - packages = ["azblob"] - pruneopts = "" - revision = "5152f14ace1c6db66bd9cb57840703a8358fa7bc" - version = "0.3.0" - -[[projects]] - digest = "1:1a217e0b6332045846341ef50125a62c93c0c8c4f892c25788d32ccc15528aa7" - name = "github.com/Azure/go-autorest" - packages = [ - "autorest", - "autorest/adal", - "autorest/azure", - "autorest/azure/auth", - "autorest/azure/cli", - "autorest/date", - "autorest/to", - "autorest/validation", - "logger", - "tracing", - ] - pruneopts = "" - revision = "f29a2eccaa178b367df0405778cd85e0af7b4225" - version = "v12.1.0" - -[[projects]] - digest = "1:10139b9c841acd336ceff02e8a85e0c558dee738b2277bb24d61d9d3c90ef1f2" - name = "github.com/census-instrumentation/opencensus-proto" - packages = [ - "gen-go/agent/common/v1", - "gen-go/agent/metrics/v1", - "gen-go/agent/trace/v1", - "gen-go/metrics/v1", - "gen-go/resource/v1", - "gen-go/trace/v1", - ] - pruneopts = "" - revision = "a105b96453fe85139acc07b68de48f2cbdd71249" - version = "v0.2.0" - -[[projects]] - branch = "master" - digest = "1:970a49480d48bef02273cab98859ba35904e271c54be651031377df25e782f40" - name = "github.com/denisenkom/go-mssqldb" - packages = [ - ".", - "internal/cp", - ] - pruneopts = "" - revision = "eb9f6a1743f30383c8168cc520ca5db1f744d6f4" - -[[projects]] - digest = "1:6098222470fe0172157ce9bbef5d2200df4edde17ee649c5d6e48330e4afa4c6" - name = "github.com/dgrijalva/jwt-go" - packages = ["."] - pruneopts = "" - revision = "06ea1031745cb8b3dab3f6a236daf2b0aa468b7e" - version = "v3.2.0" - -[[projects]] - digest = "1:459dfcae44c32c1a6831fb99c75b40e7139aa800a04f55f6e47fedb33ee4407d" - name = "github.com/dimchansky/utfbom" - packages = ["."] - pruneopts = "" - revision = "d2133a1ce379ef6fa992b0514a77146c60db9d1c" - version = "v1.1.0" - -[[projects]] - branch = "master" - digest = "1:e9ffb9315dce0051beb757d0f0fc25db57c4da654efc4eada4ea109c2d9da815" - name = "github.com/globalsign/mgo" - packages = [ - ".", - "bson", - "internal/json", - "internal/sasl", - "internal/scram", - ] - pruneopts = "" - revision = "eeefdecb41b842af6dc652aaea4026e8403e62df" - -[[projects]] - digest = "1:a095a30432f90546e50015de1a7238c2ee552faf775bd4f94010d1db41292db6" - name = "github.com/gobuffalo/envy" - packages = ["."] - pruneopts = "" - revision = "043cb4b8af871b49563291e32c66bb84378a60ac" - version = "v1.7.0" - -[[projects]] - digest = "1:529d738b7976c3848cae5cf3a8036440166835e389c1f617af701eeb12a0518d" - name = "github.com/golang/protobuf" - packages = [ - "jsonpb", - "proto", - "protoc-gen-go/descriptor", - "protoc-gen-go/generator", - "protoc-gen-go/generator/internal/remap", - "protoc-gen-go/plugin", - "ptypes", - "ptypes/any", - "ptypes/duration", - "ptypes/struct", - "ptypes/timestamp", - "ptypes/wrappers", - ] - pruneopts = "" - revision = "b5d812f8a3706043e23a9cd5babf2e5423744d30" - version = "v1.3.1" - -[[projects]] - digest = "1:dee8ec16fa714522c6cad579dfeeba3caf9644d93b8b452cd7138584402c81f7" - name = "github.com/grpc-ecosystem/grpc-gateway" - packages = [ - "internal", - "runtime", - "utilities", - ] - pruneopts = "" - revision = "8fd5fd9d19ce68183a6b0934519dfe7fe6269612" - version = "v1.9.0" - -[[projects]] - digest = "1:85f8f8d390a03287a563e215ea6bd0610c858042731a8b42062435a0dcbc485f" - name = "github.com/hashicorp/golang-lru" - packages = ["simplelru"] - pruneopts = "" - revision = "7087cb70de9f7a8bc0a10c375cb0d2280a8edf9c" - version = "v0.5.1" - -[[projects]] - digest = "1:7df5a9695a743c3e1626b28bb8741602c8c15527e1efaeaec48ab2ff9a23f74c" - name = "github.com/joho/godotenv" - packages = ["."] - pruneopts = "" - revision = "23d116af351c84513e1946b527c88823e476be13" - version = "v1.3.0" - -[[projects]] - digest = "1:ef0f9731bc6c3c59396adc50f36da36ca98c704812c449794f9326f7bc64b5f1" - name = "github.com/jpillora/backoff" - packages = ["."] - pruneopts = "" - revision = "8eab2debe79d12b7bd3d10653910df25fa9552ba" - version = "1.0.0" - -[[projects]] - digest = "1:a69ca302e0e9bab6743b40cb720ef02a8abcc2072eb55c0fd8869b3b285be425" - name = "github.com/marstr/collection" - packages = ["."] - pruneopts = "" - revision = "43f1d00df9bf332cbf8d26c3eecd6c348e92f7b3" - version = "v1.0.1" - -[[projects]] - branch = "master" - digest = "1:49435224a757cdd6728e028a3cdbaf561d8bf3ae9dee0d24be21da544c1b6be9" - name = "github.com/marstr/randname" - packages = ["."] - pruneopts = "" - revision = "d5b0f288ab8cfdaa716502900e10405f123dc0cf" - -[[projects]] - digest = "1:6dbb0eb72090871f2e58d1e37973fe3cb8c0f45f49459398d3fc740cb30e13bd" - name = "github.com/mitchellh/go-homedir" - packages = ["."] - pruneopts = "" - revision = "af06845cf3004701891bf4fdb884bfe4920b3727" - version = "v1.1.0" - -[[projects]] - digest = "1:bcc46a0fbd9e933087bef394871256b5c60269575bb661935874729c65bbbf60" - name = "github.com/mitchellh/mapstructure" - packages = ["."] - pruneopts = "" - revision = "3536a929edddb9a5b34bd6861dc4a9647cb459fe" - version = "v1.1.2" - -[[projects]] - digest = "1:df7329aa3c0a189cffe312d484a1c32d93e20b9652097b474ff8b16ac71d2279" - name = "github.com/openzipkin/zipkin-go" - packages = [ - ".", - "idgenerator", - "model", - "propagation", - "reporter", - "reporter/http", - ] - pruneopts = "" - revision = "1b5162aa314e6ccfcf83777bfb5218988c9e8283" - version = "v0.1.6" - -[[projects]] - digest = "1:1d7e1867c49a6dd9856598ef7c3123604ea3daabf5b83f303ff457bcbc410b1d" - name = "github.com/pkg/errors" - packages = ["."] - pruneopts = "" - revision = "ba968bfe8b2f7e042a574c888954fccecfa385b4" - version = "v0.8.1" - -[[projects]] - digest = "1:5ba8f069e4f3b867775f59ef435941c434e25d42818b4dad2c7c665fa04826b5" - name = "github.com/rogpeppe/go-internal" - packages = [ - "modfile", - "module", - "semver", - ] - pruneopts = "" - revision = "438578804ca6f31be148c27683afc419ce47c06e" - version = "v1.3.0" - -[[projects]] - digest = "1:7f569d906bdd20d906b606415b7d794f798f91a62fcfb6a4daa6d50690fb7a3f" - name = "github.com/satori/go.uuid" - packages = ["."] - pruneopts = "" - revision = "f58768cc1a7a7e77a3bd49e98cdd21419399b6a3" - version = "v1.2.0" - -[[projects]] - digest = "1:785b4eb9fa77cc5290dff2c72c00fb6759c2c82767895f472582f1aae7421cad" - name = "go.opencensus.io" - packages = [ - ".", - "exporter/zipkin", - "internal", - "internal/tagencoding", - "metric/metricdata", - "metric/metricproducer", - "plugin/ocgrpc", - "plugin/ochttp", - "plugin/ochttp/propagation/b3", - "plugin/ochttp/propagation/tracecontext", - "resource", - "stats", - "stats/internal", - "stats/view", - "tag", - "trace", - "trace/internal", - "trace/propagation", - "trace/tracestate", - ] - pruneopts = "" - revision = "43463a80402d8447b7fce0d2c58edf1687ff0b58" - version = "v0.19.3" - -[[projects]] - branch = "master" - digest = "1:5b3e9450868bcf9ecbca2b01ac04f142255b5744d89ec97e1ceedf57d4522645" - name = "golang.org/x/crypto" - packages = [ - "md4", - "pkcs12", - "pkcs12/internal/rc2", - ] - pruneopts = "" - revision = "22d7a77e9e5f409e934ed268692e56707cd169e5" - -[[projects]] - branch = "master" - digest = "1:c7da5579c766c6c7f70fb5c0ca8062114e7fcb6bb6b2cb163152a2ec9cec1846" - name = "golang.org/x/net" - packages = [ - "context", - "http/httpguts", - "http2", - "http2/hpack", - "idna", - "internal/timeseries", - "trace", - "websocket", - ] - pruneopts = "" - revision = "018c4d40a106a7ae83689758294fcd8d23850745" - -[[projects]] - branch = "master" - digest = "1:9f6efefb4e401a4f699a295d14518871368eb89403f2dd23ec11dfcd2c0836ba" - name = "golang.org/x/sync" - packages = ["semaphore"] - pruneopts = "" - revision = "112230192c580c3556b8cee6403af37a4fc5f28c" - -[[projects]] - branch = "master" - digest = "1:f8fc28f6666a22fb927b5a600299968203845989eba90b977525f3dcf37afd7e" - name = "golang.org/x/sys" - packages = ["unix"] - pruneopts = "" - revision = "c432e742b0af385916e013f6a34e9e73d139cf82" - -[[projects]] - digest = "1:740b51a55815493a8d0f2b1e0d0ae48fe48953bf7eaf3fcc4198823bf67768c0" - name = "golang.org/x/text" - packages = [ - "collate", - "collate/build", - "internal/colltab", - "internal/gen", - "internal/language", - "internal/language/compact", - "internal/tag", - "internal/triegen", - "internal/ucd", - "language", - "secure/bidirule", - "transform", - "unicode/bidi", - "unicode/cldr", - "unicode/norm", - "unicode/rangetable", - ] - pruneopts = "" - revision = "342b2e1fbaa52c93f31447ad2c6abc048c63e475" - version = "v0.3.2" - -[[projects]] - digest = "1:a516e3b3b8b0eaca16272b3881e588068c97c27fed4faa5708a401f11a2236d1" - name = "google.golang.org/api" - packages = ["support/bundler"] - pruneopts = "" - revision = "721295fe20d585ce7e948146f82188429d14da33" - version = "v0.5.0" - -[[projects]] - branch = "master" - digest = "1:8dd1ca0dc50d8dd88324c6fe1c355a2006e312849704a702d7ca4a3bf28b065c" - name = "google.golang.org/genproto" - packages = [ - "googleapis/api/httpbody", - "googleapis/rpc/status", - "protobuf/field_mask", - ] - pruneopts = "" - revision = "bb713bdc0e5239f2b68e560efbe1c701a6fe78f9" - -[[projects]] - digest = "1:afc1b03a6d5ba3cbb2e0a12133e734d472e4df3b65f06e600a3d57a4b82f26cc" - name = "google.golang.org/grpc" - packages = [ - ".", - "balancer", - "balancer/base", - "balancer/roundrobin", - "binarylog/grpc_binarylog_v1", - "codes", - "connectivity", - "credentials", - "credentials/internal", - "encoding", - "encoding/proto", - "grpclog", - "internal", - "internal/backoff", - "internal/balancerload", - "internal/binarylog", - "internal/channelz", - "internal/envconfig", - "internal/grpcrand", - "internal/grpcsync", - "internal/syscall", - "internal/transport", - "keepalive", - "metadata", - "naming", - "peer", - "resolver", - "resolver/dns", - "resolver/passthrough", - "stats", - "status", - "tap", - ] - pruneopts = "" - revision = "25c4f928eaa6d96443009bd842389fb4fa48664e" - version = "v1.20.1" - -[[projects]] - digest = "1:22677de4db7901eedefc577b84ea8c061c2f5531551322a092ad7e1adee4d31c" - name = "pack.ag/amqp" - packages = [ - ".", - "internal/testconn", - ] - pruneopts = "" - revision = "a69a1d51f8e7b55567f8d190a8fab04503a97735" - version = "v0.11.0" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - input-imports = [ - "github.com/Azure/azure-amqp-common-go/aad", - "github.com/Azure/azure-amqp-common-go/persist", - "github.com/Azure/azure-event-hubs-go", - "github.com/Azure/azure-event-hubs-go/eph", - "github.com/Azure/azure-event-hubs-go/storage", - "github.com/Azure/azure-sdk-for-go/profiles/2017-03-09/compute/mgmt/compute", - "github.com/Azure/azure-sdk-for-go/profiles/2017-03-09/network/mgmt/network", - "github.com/Azure/azure-sdk-for-go/profiles/2017-03-09/resources/mgmt/resources", - "github.com/Azure/azure-sdk-for-go/profiles/2017-03-09/storage/mgmt/storage", - "github.com/Azure/azure-sdk-for-go/profiles/latest/keyvault/keyvault", - "github.com/Azure/azure-sdk-for-go/services/authorization/mgmt/2015-07-01/authorization", - "github.com/Azure/azure-sdk-for-go/services/batch/2017-09-01.6.0/batch", - "github.com/Azure/azure-sdk-for-go/services/batch/mgmt/2017-09-01/batch", - "github.com/Azure/azure-sdk-for-go/services/cdn/mgmt/2017-10-12/cdn", - "github.com/Azure/azure-sdk-for-go/services/cognitiveservices/mgmt/2017-04-18/cognitiveservices", - "github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v1.0/customsearch", - "github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v1.0/entitysearch", - "github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v1.0/imagesearch", - "github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v1.0/newssearch", - "github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v1.0/spellcheck", - "github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v1.0/videosearch", - "github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v1.0/websearch", - "github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v2.1/textanalytics", - "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-04-01/compute", - "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-06-01/compute", - "github.com/Azure/azure-sdk-for-go/services/containerinstance/mgmt/2018-10-01/containerinstance", - "github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2017-09-30/containerservice", - "github.com/Azure/azure-sdk-for-go/services/cosmos-db/mgmt/2015-04-08/documentdb", - "github.com/Azure/azure-sdk-for-go/services/cosmos-db/mongodb", - "github.com/Azure/azure-sdk-for-go/services/eventhub/mgmt/2017-04-01/eventhub", - "github.com/Azure/azure-sdk-for-go/services/graphrbac/1.6/graphrbac", - "github.com/Azure/azure-sdk-for-go/services/keyvault/2016-10-01/keyvault", - "github.com/Azure/azure-sdk-for-go/services/keyvault/auth", - "github.com/Azure/azure-sdk-for-go/services/keyvault/mgmt/2016-10-01/keyvault", - "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network", - "github.com/Azure/azure-sdk-for-go/services/preview/dns/mgmt/2018-03-01-preview/dns", - "github.com/Azure/azure-sdk-for-go/services/preview/hdinsight/mgmt/2015-03-01-preview/hdinsight", - "github.com/Azure/azure-sdk-for-go/services/preview/monitor/mgmt/2018-03-01/insights", - "github.com/Azure/azure-sdk-for-go/services/preview/msi/mgmt/2015-08-31-preview/msi", - "github.com/Azure/azure-sdk-for-go/services/preview/sql/mgmt/2015-05-01-preview/sql", - "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources", - "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-06-01/storage", - "github.com/Azure/azure-sdk-for-go/services/web/mgmt/2016-09-01/web", - "github.com/Azure/azure-storage-blob-go/azblob", - "github.com/Azure/go-autorest/autorest", - "github.com/Azure/go-autorest/autorest/adal", - "github.com/Azure/go-autorest/autorest/azure", - "github.com/Azure/go-autorest/autorest/azure/auth", - "github.com/Azure/go-autorest/autorest/date", - "github.com/Azure/go-autorest/autorest/to", - "github.com/denisenkom/go-mssqldb", - "github.com/globalsign/mgo", - "github.com/globalsign/mgo/bson", - "github.com/gobuffalo/envy", - "github.com/marstr/randname", - "github.com/openzipkin/zipkin-go", - "github.com/openzipkin/zipkin-go/reporter/http", - "github.com/pkg/errors", - "github.com/satori/go.uuid", - "go.opencensus.io/exporter/zipkin", - "go.opencensus.io/trace", - ] - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/Gopkg.toml b/Gopkg.toml deleted file mode 100644 index 2162c962f..000000000 --- a/Gopkg.toml +++ /dev/null @@ -1,31 +0,0 @@ -[[constraint]] - name = "github.com/Azure/azure-sdk-for-go" - version = "29.0.0" - -[[constraint]] - name = "github.com/Azure/go-autorest" - version = "12.0.0" - -[[constraint]] - name = "github.com/Azure/azure-storage-blob-go" - version = "0.3.0" - -[[constraint]] - name = "github.com/Azure/azure-event-hubs-go" - version = "1.0.1" - -[[constraint]] - name = "github.com/denisenkom/go-mssqldb" - branch = "master" - -[[constraint]] - name = "github.com/globalsign/mgo" - branch = "master" - -[[constraint]] - name = "github.com/satori/go.uuid" - version = "1.2.0" - -[[constraint]] - name = "github.com/pkg/errors" - version = "^0.8.0" diff --git a/Makefile b/Makefile deleted file mode 100644 index fab38c012..000000000 --- a/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -test: - ./test/test.sh - -testpr: - ISPR=1 ./test/test.sh - -.PHONY: test testpr diff --git a/README.md b/README.md index 049ec0360..25b545d5b 100644 --- a/README.md +++ b/README.md @@ -18,11 +18,8 @@ For general SDK help start with the [main SDK README][]. ## To run tests 1. set up authentication (see following) -1. `dep ensure` 1. `go test -v ./network/` (or any package) -To run all tests: `make test`. - To use service principal authentication, create a principal by running `az ad sp create-for-rbac -n ""` and set the following environment variables. You can copy `.env.tpl` to a `.env` file in each package for ease of use. ```bash diff --git a/apps/tracing/Gopkg.lock b/apps/tracing/Gopkg.lock deleted file mode 100644 index 2e9e34408..000000000 --- a/apps/tracing/Gopkg.lock +++ /dev/null @@ -1,329 +0,0 @@ -# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'. - - -[[projects]] - digest = "1:b92928b73320648b38c93cacb9082c0fe3f8ac3383ad9bd537eef62c380e0e7a" - name = "contrib.go.opencensus.io/exporter/ocagent" - packages = ["."] - pruneopts = "UT" - revision = "00af367e65149ff1f2f4b93bbfbb84fd9297170d" - version = "v0.2.0" - -[[projects]] - digest = "1:99a8e7746766a6aee61c2e6cc8f306d62b6021f0d55b8c1d448ec0d1f1401792" - name = "github.com/Azure/azure-sdk-for-go" - packages = [ - "services/preview/dns/mgmt/2018-03-01-preview/dns", - "version", - ] - pruneopts = "UT" - revision = "9699bdefa481d47c5c7638a1cc05d87ce53601fd" - version = "v22.2.2" - -[[projects]] - digest = "1:117f81b372d2a2af41b3a06a8ad487b0dd4479baeec59e4ae1f1248262d6a6a2" - name = "github.com/Azure/go-autorest" - packages = [ - "autorest", - "autorest/adal", - "autorest/azure", - "autorest/azure/auth", - "autorest/azure/cli", - "autorest/date", - "autorest/to", - "autorest/validation", - "logger", - "tracing", - "version", - ] - pruneopts = "UT" - revision = "528b76fd0ebec0682f3e3da7c808cd472b999615" - version = "v11.2.7" - -[[projects]] - branch = "master" - digest = "1:d6afaeed1502aa28e80a4ed0981d570ad91b2579193404256ce672ed0a609e0d" - name = "github.com/beorn7/perks" - packages = ["quantile"] - pruneopts = "UT" - revision = "3a771d992973f24aa725d07868b467d1ddfceafb" - -[[projects]] - digest = "1:65b0d980b428a6ad4425f2df4cd5410edd81f044cf527bd1c345368444649e58" - name = "github.com/census-instrumentation/opencensus-proto" - packages = [ - "gen-go/agent/common/v1", - "gen-go/agent/trace/v1", - "gen-go/resource/v1", - "gen-go/trace/v1", - ] - pruneopts = "UT" - revision = "7f2434bc10da710debe5c4315ed6d4df454b4024" - version = "v0.1.0" - -[[projects]] - digest = "1:76dc72490af7174349349838f2fe118996381b31ea83243812a97e5a0fd5ed55" - name = "github.com/dgrijalva/jwt-go" - packages = ["."] - pruneopts = "UT" - revision = "06ea1031745cb8b3dab3f6a236daf2b0aa468b7e" - version = "v3.2.0" - -[[projects]] - digest = "1:e608bc2d867c3ded40ccea5417715393a50704ac24004afa87431a0e1976e50d" - name = "github.com/dimchansky/utfbom" - packages = ["."] - pruneopts = "UT" - revision = "5448fe645cb1964ba70ac8f9f2ffe975e61a536c" - version = "v1.0.0" - -[[projects]] - digest = "1:8f0705fa33e8957018611cc81c65cb373b626c092d39931bb86882489fc4c3f4" - name = "github.com/golang/protobuf" - packages = [ - "proto", - "ptypes", - "ptypes/any", - "ptypes/duration", - "ptypes/timestamp", - "ptypes/wrappers", - ] - pruneopts = "UT" - revision = "aa810b61a9c79d51363740d207bb46cf8e620ed5" - version = "v1.2.0" - -[[projects]] - digest = "1:ff5ebae34cfbf047d505ee150de27e60570e8c394b3b8fdbb720ff6ac71985fc" - name = "github.com/matttproud/golang_protobuf_extensions" - packages = ["pbutil"] - pruneopts = "UT" - revision = "c12348ce28de40eed0136aa2b644d0ee0650e56c" - version = "v1.0.1" - -[[projects]] - digest = "1:78bbb1ba5b7c3f2ed0ea1eab57bdd3859aec7e177811563edc41198a760b06af" - name = "github.com/mitchellh/go-homedir" - packages = ["."] - pruneopts = "UT" - revision = "ae18d6b8b3205b561c79e8e5f69bff09736185f4" - version = "v1.0.0" - -[[projects]] - digest = "1:19277f3d91ed81e4dfd7f1444a227bdfce033a377f19bf004647b3c8382e289f" - name = "github.com/openzipkin/zipkin-go" - packages = [ - ".", - "idgenerator", - "model", - "propagation", - "reporter", - "reporter/http", - ] - pruneopts = "UT" - revision = "3793c981d4f621c0e3eb1457acffa2c1cc591384" - version = "v0.1.3" - -[[projects]] - digest = "1:26663fafdea73a38075b07e8e9d82fc0056379d2be8bb4e13899e8fda7c7dd23" - name = "github.com/prometheus/client_golang" - packages = [ - "prometheus", - "prometheus/internal", - "prometheus/promhttp", - ] - pruneopts = "UT" - revision = "abad2d1bd44235a26707c172eab6bca5bf2dbad3" - version = "v0.9.1" - -[[projects]] - branch = "master" - digest = "1:2d5cd61daa5565187e1d96bae64dbbc6080dacf741448e9629c64fd93203b0d4" - name = "github.com/prometheus/client_model" - packages = ["go"] - pruneopts = "UT" - revision = "5c3871d89910bfb32f5fcab2aa4b9ec68e65a99f" - -[[projects]] - branch = "master" - digest = "1:db712fde5d12d6cdbdf14b777f0c230f4ff5ab0be8e35b239fc319953ed577a4" - name = "github.com/prometheus/common" - packages = [ - "expfmt", - "internal/bitbucket.org/ww/goautoneg", - "model", - ] - pruneopts = "UT" - revision = "1f2c4f3cd6db5fd6f68f36af6b6d5d936fd93c4e" - -[[projects]] - branch = "master" - digest = "1:ef74914912f99c79434d9c09658274678bc85080ebe3ab32bec3940ebce5e1fc" - name = "github.com/prometheus/procfs" - packages = [ - ".", - "internal/util", - "nfs", - "xfs", - ] - pruneopts = "UT" - revision = "185b4288413d2a0dd0806f78c90dde719829e5ae" - -[[projects]] - digest = "1:bc0ae0ff60977e77acb5dd7ea1290515612678fd2dbc2f1182a5906d5bf3f13c" - name = "go.opencensus.io" - packages = [ - ".", - "exemplar", - "exporter/prometheus", - "exporter/zipkin", - "internal", - "internal/tagencoding", - "plugin/ochttp", - "plugin/ochttp/propagation/b3", - "plugin/ochttp/propagation/tracecontext", - "stats", - "stats/internal", - "stats/view", - "tag", - "trace", - "trace/internal", - "trace/propagation", - "trace/tracestate", - ] - pruneopts = "UT" - revision = "b7bf3cdb64150a8c8c53b769fdeb2ba581bd4d4b" - version = "v0.18.0" - -[[projects]] - branch = "master" - digest = "1:1d18232beafad93272158a9e9810f417b418c2f967e0506f3e2609c10310fe31" - name = "golang.org/x/crypto" - packages = [ - "pkcs12", - "pkcs12/internal/rc2", - ] - pruneopts = "UT" - revision = "3d3f9f413869b949e48070b5bc593aa22cc2b8f2" - -[[projects]] - branch = "master" - digest = "1:6ca51c5d8a610b3da56856df7a8f8f3e075eba8d5f7a4acbadd79b2d2a368054" - name = "golang.org/x/net" - packages = [ - "context", - "http/httpguts", - "http2", - "http2/hpack", - "idna", - "internal/timeseries", - "trace", - ] - pruneopts = "UT" - revision = "adae6a3d119ae4890b46832a2e88a95adc62b8e7" - -[[projects]] - branch = "master" - digest = "1:5e4d81c50cffcb124b899e4f3eabec3930c73532f0096c27f94476728ba03028" - name = "golang.org/x/sync" - packages = ["semaphore"] - pruneopts = "UT" - revision = "42b317875d0fa942474b76e1b46a6060d720ae6e" - -[[projects]] - branch = "master" - digest = "1:a62e80faf19c93dcbd7954a26fdb51acbfcb4b7161966adf1de531e593c4834a" - name = "golang.org/x/sys" - packages = ["unix"] - pruneopts = "UT" - revision = "93218def8b18e66adbdab3eca8ec334700329f1f" - -[[projects]] - digest = "1:a2ab62866c75542dd18d2b069fec854577a20211d7c0ea6ae746072a1dccdd18" - name = "golang.org/x/text" - packages = [ - "collate", - "collate/build", - "internal/colltab", - "internal/gen", - "internal/tag", - "internal/triegen", - "internal/ucd", - "language", - "secure/bidirule", - "transform", - "unicode/bidi", - "unicode/cldr", - "unicode/norm", - "unicode/rangetable", - ] - pruneopts = "UT" - revision = "f21a4dfb5e38f5895301dc265a8def02365cc3d0" - version = "v0.3.0" - -[[projects]] - branch = "master" - digest = "1:5f003878aabe31d7f6b842d4de32b41c46c214bb629bb485387dbcce1edf5643" - name = "google.golang.org/api" - packages = ["support/bundler"] - pruneopts = "UT" - revision = "83a9d304b1e613fc253e1e2710778642fe81af53" - -[[projects]] - branch = "master" - digest = "1:56b0bca90b7e5d1facf5fbdacba23e4e0ce069d25381b8e2f70ef1e7ebfb9c1a" - name = "google.golang.org/genproto" - packages = ["googleapis/rpc/status"] - pruneopts = "UT" - revision = "b5d43981345bdb2c233eb4bf3277847b48c6fdc6" - -[[projects]] - digest = "1:c3ad9841823db6da420a5625b367913b4ff54bbe60e8e3c98bd20e243e62e2d2" - name = "google.golang.org/grpc" - packages = [ - ".", - "balancer", - "balancer/base", - "balancer/roundrobin", - "codes", - "connectivity", - "credentials", - "encoding", - "encoding/proto", - "grpclog", - "internal", - "internal/backoff", - "internal/channelz", - "internal/envconfig", - "internal/grpcrand", - "internal/transport", - "keepalive", - "metadata", - "naming", - "peer", - "resolver", - "resolver/dns", - "resolver/passthrough", - "stats", - "status", - "tap", - ] - pruneopts = "UT" - revision = "2e463a05d100327ca47ac218281906921038fd95" - version = "v1.16.0" - -[solve-meta] - analyzer-name = "dep" - analyzer-version = 1 - input-imports = [ - "github.com/Azure/azure-sdk-for-go/services/preview/dns/mgmt/2018-03-01-preview/dns", - "github.com/Azure/go-autorest/autorest/azure/auth", - "github.com/Azure/go-autorest/autorest/to", - "github.com/openzipkin/zipkin-go", - "github.com/openzipkin/zipkin-go/reporter/http", - "go.opencensus.io/exporter/prometheus", - "go.opencensus.io/exporter/zipkin", - "go.opencensus.io/stats/view", - "go.opencensus.io/trace", - ] - solver-name = "gps-cdcl" - solver-version = 1 diff --git a/apps/tracing/Gopkg.toml b/apps/tracing/Gopkg.toml deleted file mode 100644 index f3a09a6ea..000000000 --- a/apps/tracing/Gopkg.toml +++ /dev/null @@ -1,46 +0,0 @@ -# Gopkg.toml example -# -# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html -# for detailed Gopkg.toml documentation. -# -# required = ["github.com/user/thing/cmd/thing"] -# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"] -# -# [[constraint]] -# name = "github.com/user/project" -# version = "1.0.0" -# -# [[constraint]] -# name = "github.com/user/project2" -# branch = "dev" -# source = "github.com/myfork/project2" -# -# [[override]] -# name = "github.com/x/y" -# version = "2.4.0" -# -# [prune] -# non-go = false -# go-tests = true -# unused-packages = true - - -[[constraint]] - name = "github.com/Azure/azure-sdk-for-go" - version = "22.2.2" - -[[constraint]] - name = "github.com/Azure/go-autorest" - version = "11.2.7" - -[[constraint]] - name = "github.com/openzipkin/zipkin-go" - version = "0.1.3" - -[[constraint]] - name = "go.opencensus.io" - version = "0.18.0" - -[prune] - go-tests = true - unused-packages = true diff --git a/apps/tracing/go.mod b/apps/tracing/go.mod new file mode 100644 index 000000000..d42c1ef44 --- /dev/null +++ b/apps/tracing/go.mod @@ -0,0 +1,22 @@ +module github.com/Azure-Samples/azure-sdk-for-go-samples/apps/tracing + +go 1.13 + +require ( + contrib.go.opencensus.io/exporter/ocagent v0.2.0 // indirect + github.com/Azure/azure-sdk-for-go v22.2.2+incompatible + github.com/Azure/go-autorest v11.2.7+incompatible + github.com/census-instrumentation/opencensus-proto v0.1.0 // indirect + github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect + github.com/dimchansky/utfbom v1.0.0 // indirect + github.com/gorilla/mux v1.7.4 // indirect + github.com/mitchellh/go-homedir v1.0.0 // indirect + github.com/openzipkin/zipkin-go v0.1.3 + github.com/stretchr/testify v1.5.0 // indirect + go.opencensus.io v0.18.0 + golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869 // indirect + golang.org/x/net v0.0.0-20181114220301-adae6a3d119a // indirect + golang.org/x/sync v0.0.0-20181108010431-42b317875d0f // indirect + golang.org/x/sys v0.0.0-20181116161606-93218def8b18 // indirect + google.golang.org/genproto v0.0.0-20181109154231-b5d43981345b // indirect +) diff --git a/apps/tracing/go.sum b/apps/tracing/go.sum new file mode 100644 index 000000000..0a51e10c3 --- /dev/null +++ b/apps/tracing/go.sum @@ -0,0 +1,86 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +contrib.go.opencensus.io/exporter/ocagent v0.2.0 h1:Q/jXnVbliDYozuWJni9452xsSUuo+y8yrioxRgofBhE= +contrib.go.opencensus.io/exporter/ocagent v0.2.0/go.mod h1:0fnkYHF+ORKj7HWzOExKkUHeFX79gXSKUQbpnAM+wzo= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +github.com/Azure/azure-sdk-for-go v22.2.2+incompatible h1:dnM65i68vx79S5ugocLMoJB6As2U1IXxa995LdjIQ28= +github.com/Azure/azure-sdk-for-go v22.2.2+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/go-autorest v11.2.7+incompatible h1:DQRVSOFe2EiYoS/FZgwtjdRnHwuk+HvEXp8PEBmFH7w= +github.com/Azure/go-autorest v11.2.7+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/census-instrumentation/opencensus-proto v0.0.2-0.20180913191712-f303ae3f8d6a/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/census-instrumentation/opencensus-proto v0.1.0 h1:VwZ9smxzX8u14/125wHIX7ARV+YhR+L4JADswwxWK0Y= +github.com/census-instrumentation/opencensus-proto v0.1.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dimchansky/utfbom v1.0.0 h1:fGC2kkf4qOoKqZ4q7iIh+Vef4ubC1c38UDsEyZynZPc= +github.com/dimchansky/utfbom v1.0.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0 h1:P3YflyNX/ehuJFLhxviNdFxQPkGK5cDcApsge1SqnvM= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= +github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mitchellh/go-homedir v1.0.0 h1:vKb8ShqSby24Yrqr/yDYkuFz8d0WUjys40rvnGC8aR0= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/openzipkin/zipkin-go v0.1.3 h1:36hTtUTQR/vPX7YVJo2PYexSbHdAJiAkDrjuXw/YlYQ= +github.com/openzipkin/zipkin-go v0.1.3/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.5.0 h1:DMOzIV76tmoDNE9pX6RSN0aDtCYeCg5VueieJaAo1uw= +github.com/stretchr/testify v1.5.0/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +go.opencensus.io v0.17.0/go.mod h1:mp1VrMQxhlqqDpKvH4UcQUa4YwlzNmymAjPrDdfxNpI= +go.opencensus.io v0.18.0 h1:Mk5rgZcggtbvtAun5aJzAtjKKN/t0R3jJPlWILlv938= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869 h1:kkXA53yGe04D0adEYJwEVQjeBppL01Exg+fnMjfUraU= +golang.org/x/crypto v0.0.0-20181112202954-3d3f9f413869/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a h1:gOpx8G595UYyvj8UK4+OFyY4rx037g3fmfhe5SasG3U= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f h1:Bl/8QSvNqXvPGPGXa2z5xUTmV7VDcZyvRZ+QQXkXTZQ= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116161606-93218def8b18 h1:Wh+XCfg3kNpjhdq2LXrsiOProjtQZKme5XUx7VcxwAw= +golang.org/x/sys v0.0.0-20181116161606-93218def8b18/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf h1:rjxqQmxjyqerRKEj+tZW+MCm4LgpFXu18bsEoCMgDsk= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181109154231-b5d43981345b h1:WkFtVmaZoTRVoRYr0LTC9SYNhlw0X0HrVPz2OVssVm4= +google.golang.org/genproto v0.0.0-20181109154231-b5d43981345b/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.15.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +google.golang.org/grpc v1.16.0 h1:dz5IJGuC2BB7qXR5AyHNwAUBhZscK2xVez7mznh72sY= +google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/authorization/authorization.go b/authorization/authorization.go index 16739f4f0..432bcdbfb 100644 --- a/authorization/authorization.go +++ b/authorization/authorization.go @@ -3,15 +3,12 @@ package authorization import ( "context" "fmt" - - "github.com/Azure/azure-sdk-for-go/services/authorization/mgmt/2015-07-01/authorization" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" - "github.com/Azure-Samples/azure-sdk-for-go-samples/resources" + "github.com/Azure/azure-sdk-for-go/services/authorization/mgmt/2015-07-01/authorization" "github.com/Azure/go-autorest/autorest/to" - "github.com/satori/go.uuid" + uuid "github.com/satori/go.uuid" ) func getRoleDefinitionsClient() (authorization.RoleDefinitionsClient, error) { diff --git a/authorization/authorization_test.go b/authorization/authorization_test.go index d46cb465a..d50f8fa7c 100644 --- a/authorization/authorization_test.go +++ b/authorization/authorization_test.go @@ -20,13 +20,10 @@ import ( // TestMain sets up the environment and initiates tests. func TestMain(m *testing.M) { - var err error - err = config.ParseEnvironment() - if err != nil { + if err := config.ParseEnvironment(); err != nil { log.Fatalf("failed to parse env: %v\n", err) } - err = config.AddFlags() - if err != nil { + if err := config.AddFlags(); err != nil { log.Fatalf("failed to parse env: %v\n", err) } flag.Parse() @@ -44,12 +41,12 @@ func ExampleAssignRole() { _, err := resources.CreateGroup(ctx, groupName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } list, err := ListRoleDefinitions(ctx, "roleName eq 'Contributor'") if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("got role definitions list") @@ -65,26 +62,24 @@ func ExampleAssignRole() { groupRole, err := AssignRole(ctx, userID, *list.Values()[0].ID) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("role assigned with resource group scope") subscriptionRole, err := AssignRoleWithSubscriptionScope( ctx, userID, *list.Values()[0].ID) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("role assigned with subscription scope") if !config.KeepResources() { - DeleteRoleAssignment(ctx, *groupRole.ID) - if err != nil { - util.PrintAndLog(err.Error()) + if _, err := DeleteRoleAssignment(ctx, *groupRole.ID); err != nil { + util.LogAndPanic(err) } - DeleteRoleAssignment(ctx, *subscriptionRole.ID) - if err != nil { - util.PrintAndLog(err.Error()) + if _, err := DeleteRoleAssignment(ctx, *subscriptionRole.ID); err != nil { + util.LogAndPanic(err) } } diff --git a/azure-pipelines.yml b/azure-pipelines.yml index dbc7643c2..e8d99b6cd 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -1,42 +1,23 @@ -# Go -# Build your Go project. -# Add steps that test, save build artifacts, deploy, and more: -# https://docs.microsoft.com/azure/devops/pipelines/languages/go - trigger: -- master - -pool: - vmImage: 'ubuntu-latest' + branches: + include: + - master variables: - GOBIN: '$(GOPATH)/bin' # Go binaries path GOROOT: '/usr/local/go1.13' # Go installation path - GOPATH: '$(system.defaultWorkingDirectory)/gopath' # Go workspace path - modulePath: '$(GOPATH)/src/github.com/$(build.repository.name)' # Path to the module's code + GOPATH: '$(Agent.HomeDirectory)/go' + +stages: + - stage: LintAndBuild + jobs: + - template: .azure-pipelines/lint_and_build.yml -steps: -- script: | - mkdir -p '$(GOBIN)' - mkdir -p '$(GOPATH)/pkg' - mkdir -p '$(modulePath)' - shopt -s extglob - shopt -s dotglob - mv !(work) '$(modulePath)' - echo '##vso[task.prependpath]$(GOBIN)' - echo '##vso[task.prependpath]$(GOROOT)/bin' - displayName: 'Set up the Go workspace' -- script: | - set -e - go version - curl -sSL https://raw.githubusercontent.com/golang/dep/master/install.sh | sh - dep ensure -v - go get -u golang.org/x/lint/golint - workingDirectory: '$(modulePath)' - displayName: 'Install Dependencies' -- script: go vet $(go list ./... | grep -v vendor) - workingDirectory: '$(modulePath)' - displayName: 'Vet' -- script: go build -v $(go list ./... | grep -v vendor) - workingDirectory: '$(modulePath)' - displayName: 'Build' + - stage: LiveTest + condition: and(succeeded(), in(variables['Build.Reason'], 'IndividualCI')) + jobs: + - job: + steps: + # the live test script steps. + - script: | + echo 'live test' + displayName: 'Live Test' diff --git a/batch/batch.go b/batch/batch.go index f2d0e59ce..ebc210e34 100644 --- a/batch/batch.go +++ b/batch/batch.go @@ -13,11 +13,10 @@ import ( "net/http" "time" - "github.com/Azure/azure-sdk-for-go/services/batch/2017-09-01.6.0/batch" - batchARM "github.com/Azure/azure-sdk-for-go/services/batch/mgmt/2017-09-01/batch" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" + "github.com/Azure/azure-sdk-for-go/services/batch/2017-05-01.5.0/batch" + batchARM "github.com/Azure/azure-sdk-for-go/services/batch/mgmt/2017-09-01/batch" "github.com/Azure/go-autorest/autorest" "github.com/Azure/go-autorest/autorest/to" uuid "github.com/satori/go.uuid" @@ -25,7 +24,6 @@ import ( const ( stdoutFile string = "stdout.txt" - stderrFile string = "stderr.txt" ) func getAccountClient() batchARM.AccountClient { diff --git a/batch/batch_test.go b/batch/batch_test.go index 04a520ec1..83e6dd1c0 100644 --- a/batch/batch_test.go +++ b/batch/batch_test.go @@ -20,9 +20,9 @@ import ( ) var ( - accountName string = strings.ToLower(randname.GenerateWithPrefix("gosdkbatch", 5)) - jobID string = randname.GenerateWithPrefix("gosdk-batch-j-", 5) - poolID string = randname.GenerateWithPrefix("gosdk-batch-p-", 5) + accountName = strings.ToLower(randname.GenerateWithPrefix("gosdkbatch", 5)) + jobID = randname.GenerateWithPrefix("gosdk-batch-j-", 5) + poolID = randname.GenerateWithPrefix("gosdk-batch-p-", 5) ) // TestMain sets up the environment and initiates tests. @@ -30,11 +30,11 @@ func TestMain(m *testing.M) { var err error err = config.ParseEnvironment() if err != nil { - log.Fatalf("failed to parse env: %v\n", err) + log.Fatalf("failed to parse env: %+v", err) } err = config.AddFlags() if err != nil { - log.Fatalf("failed to parse env: %v\n", err) + log.Fatalf("failed to parse env: %+v", err) } flag.Parse() @@ -51,41 +51,36 @@ func ExampleCreateAzureBatchAccount() { _, err := resources.CreateGroup(ctx, config.GroupName()) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = CreateAzureBatchAccount(ctx, accountName, config.Location(), config.GroupName()) if err != nil { - util.PrintAndLog(err.Error()) - return + util.LogAndPanic(err) } util.PrintAndLog("created batch account") err = CreateBatchPool(ctx, accountName, config.Location(), poolID) if err != nil { - util.PrintAndLog(err.Error()) - return + util.LogAndPanic(err) } util.PrintAndLog("created batch pool") err = CreateBatchJob(ctx, accountName, config.Location(), poolID, jobID) if err != nil { - util.PrintAndLog(err.Error()) - return + util.LogAndPanic(err) } util.PrintAndLog("created batch job") taskID, err := CreateBatchTask(ctx, accountName, config.Location(), jobID) if err != nil { - util.PrintAndLog(err.Error()) - return + util.LogAndPanic(err) } util.PrintAndLog("created batch task") taskOutput, err := WaitForTaskResult(ctx, accountName, config.Location(), jobID, taskID) if err != nil { - util.PrintAndLog(err.Error()) - return + util.LogAndPanic(err) } util.PrintAndLog("output from task:") util.PrintAndLog(taskOutput) diff --git a/cdn/cdn.go b/cdn/cdn.go index bfce12f01..d63e7ec77 100644 --- a/cdn/cdn.go +++ b/cdn/cdn.go @@ -2,10 +2,10 @@ package cdn import ( "context" - "github.com/Azure/azure-sdk-for-go/services/cdn/mgmt/2017-10-12/cdn" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" + "github.com/Azure/azure-sdk-for-go/services/cdn/mgmt/2017-10-12/cdn" "github.com/Azure/go-autorest/autorest/to" ) @@ -24,6 +24,9 @@ func CheckNameAvailability(ctx context.Context, name, resourceType string) (bool Name: to.StringPtr(name), Type: to.StringPtr(resourceType), }) + if err != nil { + return false, err + } - return *resp.NameAvailable, err + return *resp.NameAvailable, nil } diff --git a/cdn/cdn_test.go b/cdn/cdn_test.go index dc1650487..c5af8f50a 100644 --- a/cdn/cdn_test.go +++ b/cdn/cdn_test.go @@ -2,13 +2,13 @@ package cdn import ( "context" + "flag" "fmt" "log" "os" "testing" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" - "github.com/marstr/randname" ) diff --git a/cognitiveservices/account.go b/cognitiveservices/account.go index 6f230c48c..225079dd9 100644 --- a/cognitiveservices/account.go +++ b/cognitiveservices/account.go @@ -10,10 +10,9 @@ import ( "log" "time" - "github.com/Azure/azure-sdk-for-go/services/cognitiveservices/mgmt/2017-04-18/cognitiveservices" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" + "github.com/Azure/azure-sdk-for-go/services/cognitiveservices/mgmt/2017-04-18/cognitiveservices" "github.com/Azure/go-autorest/autorest/to" ) @@ -43,14 +42,14 @@ func CreateCSAccount(accountName string, accountKind string) (*cognitiveservices context.Background(), config.GroupName(), accountName, - cognitiveservices.AccountCreateParameters{ + cognitiveservices.Account{ Kind: &accountKind, Sku: &cognitiveservices.Sku{ Name: to.StringPtr("S1"), Tier: cognitiveservices.Standard, }, Location: &location, - Properties: &map[string]interface{}{}, + Properties: nil, }) if err != nil { return nil, err diff --git a/cognitiveservices/cognitiveservices_test.go b/cognitiveservices/cognitiveservices_test.go index 6fa0f47e9..0927162b4 100644 --- a/cognitiveservices/cognitiveservices_test.go +++ b/cognitiveservices/cognitiveservices_test.go @@ -12,12 +12,11 @@ import ( "os" "testing" - "github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v1.0/entitysearch" - "github.com/marstr/randname" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/util" "github.com/Azure-Samples/azure-sdk-for-go-samples/resources" + "github.com/Azure/azure-sdk-for-go/services/cognitiveservices/v1.0/entitysearch" + "github.com/marstr/randname" ) // TestMain sets up the environment and initiates tests. @@ -37,10 +36,10 @@ func TestMain(m *testing.M) { os.Exit(code) } -// ExampleCognitiveServicesSearch creates a resource group and a Cognitive +// Example_cognitiveServicesSearch creates a resource group and a Cognitive // Services account of type Search. Then it executes searches for web pages, // images, videos, news and entities -func ExampleCognitiveServicesSearch() { +func Example_cognitiveServicesSearch() { accountName := randname.GenerateWithPrefix("azuresamplesgo", 10) var groupName = config.GenerateGroupName("CognitiveServicesSearch") @@ -51,13 +50,13 @@ func ExampleCognitiveServicesSearch() { _, err := resources.CreateGroup(ctx, config.GroupName()) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = CreateCSAccount(accountName, "Bing.Search.v7") if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("cognitive services search resource created") @@ -81,9 +80,9 @@ func ExampleCognitiveServicesSearch() { // completed entity search and got results } -// ExampleCognitiveServicesSpellCheck creates a resource group and a Cognitive Services account of type spell check. Then it executes +// Example_cognitiveServicesSpellCheck creates a resource group and a Cognitive Services account of type spell check. Then it executes // a spell check and inspects the corrections. -func ExampleCognitiveServicesSpellCheck() { +func Example_cognitiveServicesSpellCheck() { accountName := randname.GenerateWithPrefix("azuresamplesgo", 10) var groupName = config.GenerateGroupName("CognitiveServicesSpellcheck") @@ -94,18 +93,18 @@ func ExampleCognitiveServicesSpellCheck() { _, err := resources.CreateGroup(ctx, config.GroupName()) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = CreateCSAccount(accountName, "Bing.SpellCheck.v7") if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("cognitive services spellcheck resource created") spellCheckResult, err := SpellCheck(accountName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } if len(*spellCheckResult.FlaggedTokens) > 0 { @@ -125,7 +124,7 @@ func ExampleCognitiveServicesSpellCheck() { func searchWeb(accountName string) { webPages, err := SearchWeb(accountName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } if len(*webPages.Value) > 0 { @@ -141,7 +140,7 @@ func searchWeb(accountName string) { func searchImages(accountName string) { images, err := SearchImages(accountName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } if len(*images.Value) > 0 { @@ -183,7 +182,7 @@ func searchImages(accountName string) { func searchVideos(accountName string) { videos, err := SearchVideos(accountName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } if len(*videos.Value) > 0 { @@ -198,7 +197,7 @@ func searchVideos(accountName string) { trendingVideos, err := TrendingVideos(accountName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } if len(*trendingVideos.BannerTiles) > 0 { @@ -214,7 +213,7 @@ func searchVideos(accountName string) { func searchNews(accountName string) { news, err := SearchNews(accountName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } if len(*news.Value) > 0 { @@ -229,19 +228,18 @@ func searchNews(accountName string) { log.Printf("First news publish date: %v \n", *firstNewsResult.DatePublished) org, success := (*firstNewsResult.Provider)[0].AsOrganization() - - if success != true { - util.PrintAndLog(err.Error()) + if !success { + util.PrintAndLog("Failed to get first provider organization") + } else { + log.Printf("First news provider: %v \n", *org.Name) } - - log.Printf("First news provider: %v \n", *org.Name) } } func searchEntities(accountName string) { entities, err := SearchEntities(accountName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } if len(*entities.Value) > 0 { @@ -258,10 +256,7 @@ func searchEntities(accountName string) { func filterFunc(entity entitysearch.BasicThing) bool { thingEntity, _ := entity.AsThing() - if thingEntity.EntityPresentationInfo.EntityScenario == entitysearch.EntityScenarioDominantEntity { - return true - } - return false + return thingEntity.EntityPresentationInfo.EntityScenario == entitysearch.EntityScenarioDominantEntity } func filter(vs []entitysearch.BasicThing, f func(entitysearch.BasicThing) bool) []entitysearch.BasicThing { diff --git a/cognitiveservices/customsearch.go b/cognitiveservices/customsearch.go index 3369ac7b4..fb433b813 100644 --- a/cognitiveservices/customsearch.go +++ b/cognitiveservices/customsearch.go @@ -23,8 +23,7 @@ func getCustomSearchClient(accountName string) customsearch.CustomInstanceClient } //CustomSearch returns answers based on a custom search instance -func CustomSearch(accountName string) (customsearch.WebWebAnswer, error) { - +func CustomSearch(accountName string) (*customsearch.WebWebAnswer, error) { customSearchClient := getCustomSearchClient(accountName) query := "Xbox" customConfig := "" // subsitute with custom config id configured at https://www.customsearch.ai @@ -47,6 +46,9 @@ func CustomSearch(accountName string) (customsearch.WebWebAnswer, error) { nil, // text decorations customsearch.Raw, // text format ) + if err != nil { + return nil, err + } - return *searchResponse.WebPages, err + return searchResponse.WebPages, nil } diff --git a/cognitiveservices/entitysearch.go b/cognitiveservices/entitysearch.go index f442833d9..fe006c3fc 100644 --- a/cognitiveservices/entitysearch.go +++ b/cognitiveservices/entitysearch.go @@ -23,7 +23,7 @@ func getEntitySearchClient(accountName string) entitysearch.EntitiesClient { } //SearchEntities retunrs a list of entities -func SearchEntities(accountName string) (entitysearch.Entities, error) { +func SearchEntities(accountName string) (*entitysearch.Entities, error) { entitySearchClient := getEntitySearchClient(accountName) query := "tom cruise" market := "en-us" @@ -43,6 +43,9 @@ func SearchEntities(accountName string) (entitysearch.Entities, error) { entitysearch.Strict, // safe search "", // set lang ) + if err != nil { + return nil, err + } - return *searchResponse.Entities, err + return searchResponse.Entities, nil } diff --git a/cognitiveservices/textanalytics.go b/cognitiveservices/textanalytics.go index 27403bc7b..1cbdca859 100644 --- a/cognitiveservices/textanalytics.go +++ b/cognitiveservices/textanalytics.go @@ -20,16 +20,16 @@ import ( // func GetTextAnalyticsClient() textanalytics.BaseClient { - var subscriptionKeyVar string = "TEXT_ANALYTICS_SUBSCRIPTION_KEY" + subscriptionKeyVar := "TEXT_ANALYTICS_SUBSCRIPTION_KEY" if "" == os.Getenv(subscriptionKeyVar) { log.Fatal("Please set/export the environment variable " + subscriptionKeyVar + ".") } - var subscriptionKey string = os.Getenv(subscriptionKeyVar) - var endpointVar string = "TEXT_ANALYTICS_ENDPOINT" + subscriptionKey := os.Getenv(subscriptionKeyVar) + endpointVar := "TEXT_ANALYTICS_ENDPOINT" if "" == os.Getenv(endpointVar) { log.Fatal("Please set/export the environment variable " + endpointVar + ".") } - var endpoint string = os.Getenv(endpointVar) + endpoint := os.Getenv(endpointVar) textAnalyticsClient := textanalytics.New(endpoint) textAnalyticsClient.Authorizer = autorest.NewCognitiveServicesAuthorizer(subscriptionKey) @@ -41,25 +41,25 @@ func GetTextAnalyticsClient() textanalytics.BaseClient { // detects the sentiment of a set of text records // func SentimentAnalysis() { - textAnalyticsclient := GetTextAnalyticsClient() + textAnalyticsClient := GetTextAnalyticsClient() ctx := context.Background() inputDocuments := []textanalytics.MultiLanguageInput{ - textanalytics.MultiLanguageInput{ + { Language: to.StringPtr("en"), ID: to.StringPtr("0"), Text: to.StringPtr("I had the best day of my life."), }, - textanalytics.MultiLanguageInput{ + { Language: to.StringPtr("en"), ID: to.StringPtr("1"), Text: to.StringPtr("This was a waste of my time. The speaker put me to sleep."), }, - textanalytics.MultiLanguageInput{ + { Language: to.StringPtr("es"), ID: to.StringPtr("2"), Text: to.StringPtr("No tengo dinero ni nada que dar..."), }, - textanalytics.MultiLanguageInput{ + { Language: to.StringPtr("it"), ID: to.StringPtr("3"), Text: to.StringPtr("L'hotel veneziano era meraviglioso. È un bellissimo pezzo di architettura."), @@ -67,10 +67,10 @@ func SentimentAnalysis() { } batchInput := textanalytics.MultiLanguageBatchInput{Documents: &inputDocuments} - result, _ := textAnalyticsclient.Sentiment(ctx, to.BoolPtr(false), &batchInput) - batchResult := textanalytics.SentimentBatchResult{} - jsonString, _ := json.Marshal(result.Value) - json.Unmarshal(jsonString, &batchResult) + result, _ := textAnalyticsClient.Sentiment(ctx, to.BoolPtr(false), &batchInput) + var batchResult textanalytics.SentimentBatchResult + jsonString, _ := json.Marshal(result) + _ = json.Unmarshal(jsonString, &batchResult) // Printing sentiment results for _, document := range *batchResult.Documents { @@ -80,8 +80,8 @@ func SentimentAnalysis() { // Printing document errors fmt.Println("Document Errors") - for _, error := range *batchResult.Errors { - fmt.Printf("Document ID: %s Message : %s\n", *error.ID, *error.Message) + for _, err := range *batchResult.Errors { + fmt.Printf("Document ID: %s Message : %s\n", *err.ID, *err.Message) } } // @@ -89,25 +89,25 @@ func SentimentAnalysis() { //detects the language of a text document // func DetectLanguage() { - textAnalyticsclient := GetTextAnalyticsClient() + textAnalyticsClient := GetTextAnalyticsClient() ctx := context.Background() inputDocuments := []textanalytics.LanguageInput{ - textanalytics.LanguageInput{ + { ID: to.StringPtr("0"), Text: to.StringPtr("This is a document written in English."), }, - textanalytics.LanguageInput{ + { ID: to.StringPtr("1"), Text: to.StringPtr("Este es un document escrito en Español."), }, - textanalytics.LanguageInput{ + { ID: to.StringPtr("2"), Text: to.StringPtr("这是一个用中文写的文件"), }, } batchInput := textanalytics.LanguageBatchInput{Documents: &inputDocuments} - result, _ := textAnalyticsclient.DetectLanguage(ctx, to.BoolPtr(false), &batchInput) + result, _ := textAnalyticsClient.DetectLanguage(ctx, to.BoolPtr(false), &batchInput) // Printing language detection results for _, document := range *result.Documents { @@ -121,35 +121,34 @@ func DetectLanguage() { // Printing document errors fmt.Println("Document Errors") - for _, error := range *result.Errors { - fmt.Printf("Document ID: %s Message : %s\n", *error.ID, *error.Message) + for _, err := range *result.Errors { + fmt.Printf("Document ID: %s Message : %s\n", *err.ID, *err.Message) } } // - // extracts key-phrases from a text document // func ExtractKeyPhrases() { - textAnalyticsclient := GetTextAnalyticsClient() + textAnalyticsClient := GetTextAnalyticsClient() ctx := context.Background() inputDocuments := []textanalytics.MultiLanguageInput{ - textanalytics.MultiLanguageInput{ + { Language: to.StringPtr("ja"), ID: to.StringPtr("0"), Text: to.StringPtr("猫は幸せ"), }, - textanalytics.MultiLanguageInput{ + { Language: to.StringPtr("de"), ID: to.StringPtr("1"), Text: to.StringPtr("Fahrt nach Stuttgart und dann zum Hotel zu Fu."), }, - textanalytics.MultiLanguageInput{ + { Language: to.StringPtr("en"), ID: to.StringPtr("2"), Text: to.StringPtr("My cat might need to see a veterinarian."), }, - textanalytics.MultiLanguageInput{ + { Language: to.StringPtr("es"), ID: to.StringPtr("3"), Text: to.StringPtr("A mi me encanta el fútbol!"), @@ -157,7 +156,7 @@ func ExtractKeyPhrases() { } batchInput := textanalytics.MultiLanguageBatchInput{Documents: &inputDocuments} - result, _ := textAnalyticsclient.KeyPhrases(ctx, to.BoolPtr(false), &batchInput) + result, _ := textAnalyticsClient.KeyPhrases(ctx, to.BoolPtr(false), &batchInput) // Printing extracted key phrases results for _, document := range *result.Documents { @@ -171,8 +170,8 @@ func ExtractKeyPhrases() { // Printing document errors fmt.Println("Document Errors") - for _, error := range *result.Errors { - fmt.Printf("Document ID: %s Message : %s\n", *error.ID, *error.Message) + for _, err := range *result.Errors { + fmt.Printf("Document ID: %s Message : %s\n", *err.ID, *err.Message) } } // @@ -180,15 +179,15 @@ func ExtractKeyPhrases() { // identifies well-known entities in a text document // func ExtractEntities() { - textAnalyticsclient := GetTextAnalyticsClient() + textAnalyticsClient := GetTextAnalyticsClient() ctx := context.Background() inputDocuments := []textanalytics.MultiLanguageInput{ - textanalytics.MultiLanguageInput{ + { Language: to.StringPtr("en"), ID: to.StringPtr("0"), Text: to.StringPtr("Microsoft was founded by Bill Gates and Paul Allen on April 4, 1975, to develop and sell BASIC interpreters for the Altair 8800."), }, - textanalytics.MultiLanguageInput{ + { Language: to.StringPtr("es"), ID: to.StringPtr("1"), Text: to.StringPtr("La sede principal de Microsoft se encuentra en la ciudad de Redmond, a 21 kilómetros de Seattle."), @@ -196,7 +195,7 @@ func ExtractEntities() { } batchInput := textanalytics.MultiLanguageBatchInput{Documents: &inputDocuments} - result, _ := textAnalyticsclient.Entities(ctx, to.BoolPtr(false), &batchInput) + result, _ := textAnalyticsClient.Entities(ctx, to.BoolPtr(false), &batchInput) // Printing extracted entities results for _, document := range *result.Documents { @@ -217,8 +216,8 @@ func ExtractEntities() { // Printing document errors fmt.Println("Document Errors") - for _, error := range *result.Errors { - fmt.Printf("Document ID: %s Message : %s\n", *error.ID, *error.Message) + for _, err := range *result.Errors { + fmt.Printf("Document ID: %s Message : %s\n", *err.ID, *err.Message) } } // \ No newline at end of file diff --git a/cognitiveservices/websearch.go b/cognitiveservices/websearch.go index a00a7f08e..b7efe4058 100644 --- a/cognitiveservices/websearch.go +++ b/cognitiveservices/websearch.go @@ -23,7 +23,7 @@ func getWebSearchClient(accountName string) websearch.WebClient { } //SearchWeb returns a web answer contains a list of web pages -func SearchWeb(accountName string) (websearch.WebWebAnswer, error) { +func SearchWeb(accountName string) (*websearch.WebWebAnswer, error) { webSearchClient := getWebSearchClient(accountName) query := "tom cruise" searchResponse, err := webSearchClient.Search( @@ -48,6 +48,9 @@ func SearchWeb(accountName string) (websearch.WebWebAnswer, error) { nil, // text decorations websearch.Raw, // text format ) + if err != nil { + return nil, err + } - return *searchResponse.WebPages, err + return searchResponse.WebPages, nil } diff --git a/compute/compute_test.go b/compute/compute_test.go index 08dcb691a..efcfbc6f8 100644 --- a/compute/compute_test.go +++ b/compute/compute_test.go @@ -37,18 +37,18 @@ var ( sshPublicKeyPath = os.Getenv("HOME") + "/.ssh/id_rsa.pub" - containerGroupName string = randname.GenerateWithPrefix("gosdk-aci-", 10) - aksClusterName string = randname.GenerateWithPrefix("gosdk-aks-", 10) - aksUsername string = "azureuser" - aksSSHPublicKeyPath string = os.Getenv("HOME") + "/.ssh/id_rsa.pub" - aksAgentPoolCount int32 = 4 + containerGroupName = randname.GenerateWithPrefix("gosdk-aci-", 10) + aksClusterName = randname.GenerateWithPrefix("gosdk-aks-", 10) + aksUsername = "azureuser" + aksSSHPublicKeyPath = os.Getenv("HOME") + "/.ssh/id_rsa.pub" + aksAgentPoolCount int32 = 4 ) func addLocalEnvAndParse() error { // parse env at top-level (also controls dotenv load) err := config.ParseEnvironment() if err != nil { - return fmt.Errorf("failed to add top-level env: %v\n", err.Error()) + return fmt.Errorf("failed to add top-level env: %+v", err) } // add local env @@ -63,7 +63,7 @@ func addLocalFlagsAndParse() error { // add top-level flags err := config.AddFlags() if err != nil { - return fmt.Errorf("failed to add top-level flags: %v\n", err.Error()) + return fmt.Errorf("failed to add top-level flags: %+v", err) } // add local flags diff --git a/compute/container_cluster.go b/compute/container_cluster.go index d00382631..9117f8b37 100644 --- a/compute/container_cluster.go +++ b/compute/container_cluster.go @@ -8,10 +8,9 @@ import ( "os" "time" - "github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2017-09-30/containerservice" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" + "github.com/Azure/azure-sdk-for-go/services/containerservice/mgmt/2017-09-30/containerservice" "github.com/Azure/go-autorest/autorest/to" ) diff --git a/compute/container_cluster_test.go b/compute/container_cluster_test.go index d2da98f95..eb9017e92 100644 --- a/compute/container_cluster_test.go +++ b/compute/container_cluster_test.go @@ -19,24 +19,24 @@ func ExampleCreateAKS() { _, err := resources.CreateGroup(ctx, config.GroupName()) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = CreateAKS(ctx, aksClusterName, config.Location(), config.GroupName(), aksUsername, aksSSHPublicKeyPath, config.ClientID(), config.ClientSecret(), aksAgentPoolCount) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created AKS cluster") _, err = GetAKS(ctx, config.GroupName(), aksClusterName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("retrieved AKS cluster") _, err = DeleteAKS(ctx, config.GroupName(), aksClusterName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("deleted AKS cluster") diff --git a/compute/container_instance.go b/compute/container_instance.go index 478edbac8..d8b60fbf0 100644 --- a/compute/container_instance.go +++ b/compute/container_instance.go @@ -102,7 +102,7 @@ func GetContainerGroup(ctx context.Context, resourceGroupName, containerGroupNam } // UpdateContainerGroup updates the image of the first container of an existing container group -// given a resrouce group name and container group name +// given a resource group name and container group name func UpdateContainerGroup(ctx context.Context, resourceGroupName, containerGroupName string) (c containerinstance.ContainerGroup, err error) { containerGroupsClient, err := getContainerGroupsClient() if err != nil { diff --git a/compute/container_instance_test.go b/compute/container_instance_test.go index 416f6e253..9e0969b66 100644 --- a/compute/container_instance_test.go +++ b/compute/container_instance_test.go @@ -23,7 +23,7 @@ func ExampleCreateContainerGroup() { _, err := resources.CreateGroup(ctx, groupName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = CreateContainerGroup(ctx, containerGroupName, config.Location(), groupName) diff --git a/compute/hybrid/compute_test.go b/compute/hybrid/compute_test.go index 91888f939..16051ff13 100644 --- a/compute/hybrid/compute_test.go +++ b/compute/hybrid/compute_test.go @@ -8,6 +8,7 @@ package compute import ( "context" "flag" + "log" "os" "testing" @@ -16,7 +17,6 @@ import ( hybridnetwork "github.com/Azure-Samples/azure-sdk-for-go-samples/network/hybrid" hybridresources "github.com/Azure-Samples/azure-sdk-for-go-samples/resources/hybrid" hybridstorage "github.com/Azure-Samples/azure-sdk-for-go-samples/storage/hybrid" - "github.com/marstr/randname" ) @@ -35,8 +35,12 @@ var ( ) func TestMain(m *testing.M) { - config.ParseEnvironment() - config.AddFlags() + if err := config.ParseEnvironment(); err != nil { + log.Fatalf("failed to parse env: %+v", err) + } + if err := config.AddFlags(); err != nil { + log.Fatalf("failed to add flags: %+v", err) + } flag.Parse() os.Exit(m.Run()) } @@ -49,41 +53,41 @@ func ExampleCreateVM() { defer hybridresources.Cleanup(ctx) _, err := hybridresources.CreateGroup(ctx) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = hybridnetwork.CreateVirtualNetworkAndSubnets(ctx, virtualNetworkName, subnetName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created vnet and a subnet") _, err = hybridnetwork.CreateNetworkSecurityGroup(ctx, nsgName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created network security group") _, err = hybridnetwork.CreatePublicIP(ctx, ipName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created public IP") _, err = hybridnetwork.CreateNetworkInterface(ctx, nicName, nsgName, virtualNetworkName, subnetName, ipName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created nic") _, err = hybridstorage.CreateStorageAccount(ctx, storageAccountName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created storage account") _, err = CreateVM(ctx, vmName, nicName, username, password, storageAccountName, sshPublicKeyPath) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created VM") diff --git a/compute/vm.go b/compute/vm.go index 9bfd1edd8..a0fbd05b9 100644 --- a/compute/vm.go +++ b/compute/vm.go @@ -15,7 +15,7 @@ import ( "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" "github.com/Azure-Samples/azure-sdk-for-go-samples/network" - "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-06-01/compute" + "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute" "github.com/Azure/go-autorest/autorest" "github.com/Azure/go-autorest/autorest/to" ) @@ -199,7 +199,8 @@ func RestartVM(ctx context.Context, vmName string) (osr autorest.Response, err e // StopVM stops the selected VM func StopVM(ctx context.Context, vmName string) (osr autorest.Response, err error) { vmClient := getVMClient() - future, err := vmClient.PowerOff(ctx, config.GroupName(), vmName) + // skipShutdown parameter is optional, we are taking its default value here + future, err := vmClient.PowerOff(ctx, config.GroupName(), vmName, nil) if err != nil { return osr, fmt.Errorf("cannot power off vm: %v", err) } diff --git a/compute/vm_disk.go b/compute/vm_disk.go index b02c021af..df79d7d1f 100644 --- a/compute/vm_disk.go +++ b/compute/vm_disk.go @@ -12,21 +12,20 @@ import ( "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" "github.com/Azure-Samples/azure-sdk-for-go-samples/network" - disks "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-04-01/compute" - "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-06-01/compute" + "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute" "github.com/Azure/go-autorest/autorest/to" "github.com/satori/go.uuid" ) -func getDisksClient() disks.DisksClient { - disksClient := disks.NewDisksClient(config.SubscriptionID()) +func getDisksClient() compute.DisksClient { + disksClient := compute.NewDisksClient(config.SubscriptionID()) a, _ := iam.GetResourceManagementAuthorizer() disksClient.Authorizer = a disksClient.AddToUserAgent(config.UserAgent()) return disksClient } -func getDisk(ctx context.Context, diskName string) (disk disks.Disk, err error) { +func getDisk(ctx context.Context, diskName string) (disk compute.Disk, err error) { disksClient := getDisksClient() return disksClient.Get(ctx, config.GroupName(), diskName) } @@ -86,7 +85,7 @@ func DetachDataDisks(ctx context.Context, vmName string) (vm compute.VirtualMach } // UpdateOSDiskSize increases the selected VM's OS disk size by 10GB. -func UpdateOSDiskSize(ctx context.Context, vmName string) (d disks.Disk, err error) { +func UpdateOSDiskSize(ctx context.Context, vmName string) (d compute.Disk, err error) { vm, err := GetVM(ctx, vmName) if err != nil { return d, fmt.Errorf("cannot get vm: %v", err) @@ -110,8 +109,8 @@ func UpdateOSDiskSize(ctx context.Context, vmName string) (d disks.Disk, err err future, err := disksClient.Update(ctx, config.GroupName(), *vm.StorageProfile.OsDisk.Name, - disks.DiskUpdate{ - DiskUpdateProperties: &disks.DiskUpdateProperties{ + compute.DiskUpdate{ + DiskUpdateProperties: &compute.DiskUpdateProperties{ DiskSizeGB: sizeGB, }, }) @@ -128,17 +127,17 @@ func UpdateOSDiskSize(ctx context.Context, vmName string) (d disks.Disk, err err } // CreateDisk creates an empty 64GB disk which can be attached to a VM. -func CreateDisk(ctx context.Context, diskName string) (disk disks.Disk, err error) { +func CreateDisk(ctx context.Context, diskName string) (disk compute.Disk, err error) { disksClient := getDisksClient() future, err := disksClient.CreateOrUpdate( ctx, config.GroupName(), diskName, - disks.Disk{ + compute.Disk{ Location: to.StringPtr(config.Location()), - DiskProperties: &disks.DiskProperties{ - CreationData: &disks.CreationData{ - CreateOption: disks.Empty, + DiskProperties: &compute.DiskProperties{ + CreationData: &compute.CreationData{ + CreateOption: compute.Empty, }, DiskSizeGB: to.Int32Ptr(64), }, diff --git a/compute/vm_scale_set.go b/compute/vm_scale_set.go index 401f45996..d67b5e7fe 100644 --- a/compute/vm_scale_set.go +++ b/compute/vm_scale_set.go @@ -15,11 +15,12 @@ import ( "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" "github.com/Azure-Samples/azure-sdk-for-go-samples/network" - "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-04-01/compute" + "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute" + "github.com/Azure/go-autorest/autorest" "github.com/Azure/go-autorest/autorest/to" ) -func getVMSSClient() compute.VirtualMachineScaleSetsClient { +func GetVMSSClient() compute.VirtualMachineScaleSetsClient { vmssClient := compute.NewVirtualMachineScaleSetsClient(config.SubscriptionID()) a, _ := iam.GetResourceManagementAuthorizer() vmssClient.Authorizer = a @@ -27,7 +28,7 @@ func getVMSSClient() compute.VirtualMachineScaleSetsClient { return vmssClient } -func getVMSSExtensionsClient() compute.VirtualMachineScaleSetExtensionsClient { +func GetVMSSExtensionsClient() compute.VirtualMachineScaleSetExtensionsClient { extClient := compute.NewVirtualMachineScaleSetExtensionsClient(config.SubscriptionID()) a, _ := iam.GetResourceManagementAuthorizer() extClient.Authorizer = a @@ -52,13 +53,13 @@ func CreateVMSS(ctx context.Context, vmssName, vnetName, subnetName, username, p sshKeyData = fakepubkey } - vmssClient := getVMSSClient() + vmssClient := GetVMSSClient() future, err := vmssClient.CreateOrUpdate( ctx, config.GroupName(), vmssName, compute.VirtualMachineScaleSet{ - Location: to.StringPtr(config.Location()), + Location: to.StringPtr(config.DefaultLocation()), Sku: &compute.Sku{ Name: to.StringPtr(string(compute.VirtualMachineSizeTypesBasicA0)), Capacity: to.Int64Ptr(1), @@ -66,8 +67,11 @@ func CreateVMSS(ctx context.Context, vmssName, vnetName, subnetName, username, p VirtualMachineScaleSetProperties: &compute.VirtualMachineScaleSetProperties{ Overprovision: to.BoolPtr(false), UpgradePolicy: &compute.UpgradePolicy{ - Mode: compute.Manual, - AutomaticOSUpgrade: to.BoolPtr(false), + Mode: compute.Manual, + AutomaticOSUpgradePolicy: &compute.AutomaticOSUpgradePolicy{ + EnableAutomaticOSUpgrade: to.BoolPtr(false), + DisableAutomaticRollback: to.BoolPtr(false), + }, }, VirtualMachineProfile: &compute.VirtualMachineScaleSetVMProfile{ OsProfile: &compute.VirtualMachineScaleSetOSProfile{ @@ -134,14 +138,13 @@ func CreateVMSS(ctx context.Context, vmssName, vnetName, subnetName, username, p // GetVMSS gets the specified VMSS info func GetVMSS(ctx context.Context, vmssName string) (compute.VirtualMachineScaleSet, error) { - vmssClient := getVMSSClient() + vmssClient := GetVMSSClient() return vmssClient.Get(ctx, config.GroupName(), vmssName) } // UpdateVMSS modifies the VMSS resource by getting it, updating it locally, and // putting it back to the server. func UpdateVMSS(ctx context.Context, vmssName string, tags map[string]*string) (vmss compute.VirtualMachineScaleSet, err error) { - // get the VMSS resource vmss, err = GetVMSS(ctx, vmssName) if err != nil { @@ -152,7 +155,7 @@ func UpdateVMSS(ctx context.Context, vmssName string, tags map[string]*string) ( vmss.Tags = tags // PUT it back - vmssClient := getVMSSClient() + vmssClient := GetVMSSClient() future, err := vmssClient.CreateOrUpdate(ctx, config.GroupName(), vmssName, vmss) if err != nil { return vmss, fmt.Errorf("cannot update vmss: %v", err) @@ -167,8 +170,8 @@ func UpdateVMSS(ctx context.Context, vmssName string, tags map[string]*string) ( } // DeallocateVMSS deallocates the selected VMSS -func DeallocateVMSS(ctx context.Context, vmssName string) (osr compute.OperationStatusResponse, err error) { - vmssClient := getVMSSClient() +func DeallocateVMSS(ctx context.Context, vmssName string) (osr autorest.Response, err error) { + vmssClient := GetVMSSClient() // passing nil instance ids will deallocate all VMs in the VMSS future, err := vmssClient.Deallocate(ctx, config.GroupName(), vmssName, nil) if err != nil { @@ -184,8 +187,8 @@ func DeallocateVMSS(ctx context.Context, vmssName string) (osr compute.Operation } // StartVMSS starts the selected VMSS -func StartVMSS(ctx context.Context, vmssName string) (osr compute.OperationStatusResponse, err error) { - vmssClient := getVMSSClient() +func StartVMSS(ctx context.Context, vmssName string) (osr autorest.Response, err error) { + vmssClient := GetVMSSClient() // passing nil instance ids will start all VMs in the VMSS future, err := vmssClient.Start(ctx, config.GroupName(), vmssName, nil) if err != nil { @@ -201,8 +204,8 @@ func StartVMSS(ctx context.Context, vmssName string) (osr compute.OperationStatu } // RestartVMSS restarts the selected VMSS -func RestartVMSS(ctx context.Context, vmssName string) (osr compute.OperationStatusResponse, err error) { - vmssClient := getVMSSClient() +func RestartVMSS(ctx context.Context, vmssName string) (osr autorest.Response, err error) { + vmssClient := GetVMSSClient() // passing nil instance ids will restart all VMs in the VMSS future, err := vmssClient.Restart(ctx, config.GroupName(), vmssName, nil) if err != nil { @@ -218,10 +221,10 @@ func RestartVMSS(ctx context.Context, vmssName string) (osr compute.OperationSta } // StopVMSS stops the selected VMSS -func StopVMSS(ctx context.Context, vmssName string) (osr compute.OperationStatusResponse, err error) { - vmssClient := getVMSSClient() +func StopVMSS(ctx context.Context, vmssName string) (osr autorest.Response, err error) { + vmssClient := GetVMSSClient() // passing nil instance ids will stop all VMs in the VMSS - future, err := vmssClient.PowerOff(ctx, config.GroupName(), vmssName, nil) + future, err := vmssClient.PowerOff(ctx, config.GroupName(), vmssName, nil, nil) if err != nil { return osr, fmt.Errorf("cannot power off vmss: %v", err) } diff --git a/compute/vm_scale_set_test.go b/compute/vm_scale_set_test.go index f4ee5d7ef..c09ec28c1 100644 --- a/compute/vm_scale_set_test.go +++ b/compute/vm_scale_set_test.go @@ -16,9 +16,9 @@ import ( "github.com/Azure/go-autorest/autorest/to" ) -// ExampleCreateVMSS creates a group and network artifacts needed for a VMSS, then +// Example_createVMSS creates a group and network artifacts needed for a VMSS, then // creates a VMSS and tests operations on it. -func ExampleCreateVMSS() { +func Example_createVMSS() { var groupName = config.GenerateGroupName("VMSS") // TODO: remove and use local `groupName` only config.SetGroupName(groupName) @@ -29,18 +29,18 @@ func ExampleCreateVMSS() { _, err := resources.CreateGroup(ctx, groupName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = network.CreateVirtualNetworkAndSubnets(ctx, virtualNetworkName, subnet1Name, subnet2Name) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created vnet and 2 subnets") _, err = CreateVMSS(ctx, vmssName, virtualNetworkName, subnet1Name, username, password, sshPublicKeyPath) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created VMSS") @@ -50,26 +50,26 @@ func ExampleCreateVMSS() { "cloud": to.StringPtr("azure"), }) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("updated VMSS") // set or change system state _, err = StartVMSS(ctx, vmssName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("started VMSS") _, err = RestartVMSS(ctx, vmssName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("restarted VMSS") _, err = StopVMSS(ctx, vmssName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("stopped VMSS") diff --git a/compute/vm_test.go b/compute/vm_test.go index 0ef1dd1c8..822c466b8 100644 --- a/compute/vm_test.go +++ b/compute/vm_test.go @@ -21,9 +21,9 @@ import ( "github.com/marstr/randname" ) -// ExampleVM creates a group and network artifacts needed for a VM, then +// Example_createVM creates a group and network artifacts needed for a VM, then // creates a VM and tests operations on it. -func ExampleCreateVM() { +func Example_createVM() { var groupName = config.GenerateGroupName("VM") // TODO: remove and use local `groupName` only config.SetGroupName(groupName) @@ -34,36 +34,36 @@ func ExampleCreateVM() { _, err := resources.CreateGroup(ctx, groupName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = network.CreateVirtualNetworkAndSubnets(ctx, virtualNetworkName, subnet1Name, subnet2Name) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created vnet and 2 subnets") _, err = network.CreateNetworkSecurityGroup(ctx, nsgName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created network security group") _, err = network.CreatePublicIP(ctx, ipName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created public IP") _, err = network.CreateNIC(ctx, virtualNetworkName, subnet1Name, nsgName, ipName, nicName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created nic") _, err = CreateVM(ctx, vmName, nicName, username, password, sshPublicKeyPath) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created VM") @@ -73,26 +73,26 @@ func ExampleCreateVM() { "cloud": to.StringPtr("azure"), }) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("updated VM") // set or change system state _, err = StartVM(ctx, vmName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("started VM") _, err = RestartVM(ctx, vmName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("restarted VM") _, err = StopVM(ctx, vmName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("stopped VM") @@ -108,7 +108,7 @@ func ExampleCreateVM() { // stopped VM } -func ExampleCreateVMWithMSI() { +func Example_createVMWithMSI() { var groupName = config.GenerateGroupName("VMWithMSI") // TODO: remove and use local `groupName` only config.SetGroupName(groupName) @@ -119,60 +119,60 @@ func ExampleCreateVMWithMSI() { _, err := resources.CreateGroup(ctx, groupName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = network.CreateVirtualNetworkAndSubnets(ctx, virtualNetworkName, subnet1Name, subnet2Name) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created vnet and 2 subnets") _, err = network.CreateNetworkSecurityGroup(ctx, nsgName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created network security group") _, err = network.CreatePublicIP(ctx, ipName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created public IP") _, err = network.CreateNIC(ctx, virtualNetworkName, subnet1Name, nsgName, ipName, nicName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created nic") _, err = CreateVMWithMSI(ctx, vmName, nicName, username, password) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created VM") _, err = AddIdentityToVM(ctx, vmName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("added MSI extension") vm, err := GetVM(ctx, vmName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("got VM") list, err := authorization.ListRoleDefinitions(ctx, "roleName eq 'Contributor'") if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("got role definitions list") _, err = authorization.AssignRole(ctx, *vm.Identity.PrincipalID, *list.Values()[0].ID) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("role assigned") @@ -188,7 +188,7 @@ func ExampleCreateVMWithMSI() { // role assigned } -func ExampleCreateVMWithEncryptedDisks() { +func Example_createVMWithEncryptedDisks() { vaultName := randname.GenerateWithPrefix("gosdk-vault", 10) var groupName = config.GenerateGroupName("VMWithEncryptedDisks") @@ -200,36 +200,36 @@ func ExampleCreateVMWithEncryptedDisks() { _, err := resources.CreateGroup(ctx, config.GroupName()) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = network.CreateVirtualNetworkAndSubnets(ctx, virtualNetworkName, subnet1Name, subnet2Name) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created vnet and subnets") _, err = network.CreatePublicIP(ctx, ipName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created public IP") _, err = network.CreateNIC(ctx, virtualNetworkName, subnet1Name, "", ipName, nicName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created nic") _, err = CreateDisk(ctx, diskName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created disk") _, err = CreateVMWithDisk(ctx, nicName, diskName, vmName, username, password) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created virtual machine") @@ -237,25 +237,25 @@ func ExampleCreateVMWithEncryptedDisks() { var userID string currentUser, err := graphrbac.GetCurrentUser(ctx) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } userID = *currentUser.ObjectID _, err = keyvault.CreateVaultWithPolicies(ctx, vaultName, userID) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created keyvault") key, err := keyvault.CreateKey(ctx, vaultName, "keyName") if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created key bundle") _, err = AddDiskEncryptionToVM(ctx, vmName, vaultName, *key.Key.Kid) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("added vm encryption extension") @@ -270,7 +270,7 @@ func ExampleCreateVMWithEncryptedDisks() { // added vm encryption extension } -func ExampleCreateVMsWithLoadBalancer() { +func Example_createVMsWithLoadBalancer() { var groupName = config.GenerateGroupName("VMsWithLoadBalancer") config.SetGroupName(groupName) @@ -280,50 +280,50 @@ func ExampleCreateVMsWithLoadBalancer() { _, err := resources.CreateGroup(ctx, config.GroupName()) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } asName := "as1" _, err = network.CreatePublicIP(ctx, ipName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created public IP") _, err = network.CreateLoadBalancer(ctx, lbName, ipName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created load balancer") _, err = network.CreateVirtualNetwork(ctx, virtualNetworkName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created vnet") _, err = network.CreateVirtualNetworkSubnet(ctx, virtualNetworkName, subnet1Name) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created subnet") _, err = CreateAvailabilitySet(ctx, asName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created availability set") _, err = CreateVMWithLoadBalancer(ctx, "vm1", lbName, virtualNetworkName, subnet1Name, ipName, asName, 0) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created virtual machine on load balance, with NAT rule 1") _, err = CreateVMWithLoadBalancer(ctx, "vm2", lbName, virtualNetworkName, subnet1Name, ipName, asName, 1) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created virtual machine on load balance, with NAT rule 2") @@ -337,7 +337,7 @@ func ExampleCreateVMsWithLoadBalancer() { // created virtual machine on load balance, with NAT rule 2 } -func ExampleCreateVMWithDisks() { +func Example_createVMWithDisks() { var groupName = config.GenerateGroupName("VMWithDisks") // TODO: remove and use local `groupName` only config.SetGroupName(groupName) @@ -348,49 +348,49 @@ func ExampleCreateVMWithDisks() { _, err := resources.CreateGroup(ctx, groupName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = network.CreateVirtualNetworkAndSubnets(ctx, virtualNetworkName, subnet1Name, subnet2Name) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created vnet and 2 subnets") _, err = network.CreateNetworkSecurityGroup(ctx, nsgName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created network security group") _, err = network.CreatePublicIP(ctx, ipName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created public IP") _, err = network.CreateNIC(ctx, virtualNetworkName, subnet1Name, nsgName, ipName, nicName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created nic") // Disks _, err = AttachDataDisk(ctx, vmName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("attached data disks") _, err = DetachDataDisks(ctx, vmName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("detached data disks") _, err = UpdateOSDiskSize(ctx, vmName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("updated OS disk size") @@ -400,7 +400,7 @@ func ExampleCreateVMWithDisks() { // updated OS disk size } -func ExampleCreateVMWithUserAssignedIdentity() { +func Example_createVMWithUserAssignedIdentity() { var groupName = config.GenerateGroupName("VMWithUserAssignedID") // TODO: remove and use local `groupName` only config.SetGroupName(groupName) @@ -411,69 +411,69 @@ func ExampleCreateVMWithUserAssignedIdentity() { _, err := resources.CreateGroup(ctx, groupName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) return } _, err = network.CreateVirtualNetworkAndSubnets(ctx, virtualNetworkName, subnet1Name, subnet2Name) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) return } util.PrintAndLog("created vnet and 2 subnets") _, err = network.CreateNetworkSecurityGroup(ctx, nsgName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) return } util.PrintAndLog("created network security group") _, err = network.CreatePublicIP(ctx, ipName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) return } util.PrintAndLog("created public IP") _, err = network.CreateNIC(ctx, virtualNetworkName, subnet1Name, nsgName, ipName, nicName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) return } util.PrintAndLog("created nic") id1, err := msi.CreateUserAssignedIdentity(groupName, "useridentity1") if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) return } util.PrintAndLog("created first user-assigned identity") _, err = CreateVMWithUserAssignedID(ctx, vmName, nicName, username, password, *id1) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) return } util.PrintAndLog("created VM") id2, err := msi.CreateUserAssignedIdentity(groupName, "useridentity2") if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) return } util.PrintAndLog("created second user-assigned identity") _, err = AddUserAssignedIDToVM(ctx, vmName, *id2) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) return } util.PrintAndLog("added second user-assigned identity to VM") _, err = RemoveUserAssignedIDFromVM(ctx, vmName, *id1) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) return } util.PrintAndLog("removed first user-assigned identity from VM") diff --git a/compute/vm_with_availabilityset.go b/compute/vm_with_availabilityset.go index f19fa000f..53585e08f 100644 --- a/compute/vm_with_availabilityset.go +++ b/compute/vm_with_availabilityset.go @@ -9,11 +9,10 @@ import ( "context" "fmt" - "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-06-01/compute" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" "github.com/Azure-Samples/azure-sdk-for-go-samples/network" + "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute" "github.com/Azure/go-autorest/autorest/to" ) @@ -53,7 +52,6 @@ func GetAvailabilitySet(ctx context.Context, asName string) (compute.Availabilit // creates and configures a load balancer and associates that with the VM's // NIC. func CreateVMWithLoadBalancer(ctx context.Context, vmName, lbName, vnetName, subnetName, publicipName, availabilitySetName string, natRule int) (vm compute.VirtualMachine, err error) { - nicName := fmt.Sprintf("nic-%s", vmName) _, err = network.CreateNICWithLoadBalancer(ctx, lbName, vnetName, subnetName, nicName, natRule) diff --git a/compute/vm_with_identity.go b/compute/vm_with_identity.go index e45b95b54..b6c8acff2 100644 --- a/compute/vm_with_identity.go +++ b/compute/vm_with_identity.go @@ -11,8 +11,8 @@ import ( "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/network" - "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2018-06-01/compute" - "github.com/Azure/azure-sdk-for-go/services/preview/msi/mgmt/2015-08-31-preview/msi" + "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2019-07-01/compute" + "github.com/Azure/azure-sdk-for-go/services/msi/mgmt/2018-11-30/msi" "github.com/Azure/go-autorest/autorest/to" "github.com/pkg/errors" ) diff --git a/cosmosdb/cosmosdb.go b/cosmosdb/cosmosdb.go index e8d9dfa53..bf10a5dd7 100644 --- a/cosmosdb/cosmosdb.go +++ b/cosmosdb/cosmosdb.go @@ -9,10 +9,9 @@ import ( "context" "fmt" - "github.com/Azure/azure-sdk-for-go/services/cosmos-db/mgmt/2015-04-08/documentdb" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" + "github.com/Azure/azure-sdk-for-go/services/cosmos-db/mgmt/2015-04-08/documentdb" "github.com/Azure/go-autorest/autorest/to" ) diff --git a/cosmosdb/cosmosdb_test.go b/cosmosdb/cosmosdb_test.go index 8e348def7..87e9de781 100644 --- a/cosmosdb/cosmosdb_test.go +++ b/cosmosdb/cosmosdb_test.go @@ -14,13 +14,12 @@ import ( "strings" "testing" - "github.com/Azure/azure-sdk-for-go/services/cosmos-db/mongodb" - "github.com/globalsign/mgo/bson" - "github.com/marstr/randname" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/util" "github.com/Azure-Samples/azure-sdk-for-go-samples/resources" + "github.com/Azure/azure-sdk-for-go/services/cosmos-db/mongodb" + "github.com/globalsign/mgo/bson" + "github.com/marstr/randname" ) var ( @@ -44,7 +43,7 @@ func TestMain(m *testing.M) { os.Exit(code) } -func ExampleCosmosDBOperations() { +func Example_cosmosDBOperations() { var groupName = config.GenerateGroupName("CosmosDB") config.SetGroupName(groupName) @@ -53,18 +52,18 @@ func ExampleCosmosDBOperations() { _, err := resources.CreateGroup(ctx, config.GroupName()) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = CreateDatabaseAccount(ctx, accountName) if err != nil { - util.PrintAndLog(fmt.Sprintf("cannot create database account: %v", err)) + util.LogAndPanic(fmt.Errorf("cannot create database account: %+v", err)) } util.PrintAndLog("database account created") keys, err := ListKeys(ctx, accountName) if err != nil { - util.PrintAndLog(fmt.Sprintf("cannot list keys: %v", err)) + util.LogAndPanic(fmt.Errorf("cannot list keys: %+v", err)) } util.PrintAndLog("keys listed") @@ -73,7 +72,7 @@ func ExampleCosmosDBOperations() { session, err := mongodb.NewMongoDBClientWithCredentials(accountName, *keys.PrimaryMasterKey, host) if err != nil { - util.PrintAndLog(fmt.Sprintf("cannot get mongoDB session: %v", err)) + util.LogAndPanic(fmt.Errorf("cannot get mongoDB session: %+v", err)) } util.PrintAndLog("got mongoDB session") @@ -92,7 +91,7 @@ func ExampleCosmosDBOperations() { "LastUpdatedBy": "shergin", }) if err != nil { - util.PrintAndLog(fmt.Sprintf("cannot insert document: %v", err)) + util.LogAndPanic(fmt.Errorf("cannot insert document: %v", err)) } util.PrintAndLog("inserted document") @@ -102,7 +101,7 @@ func ExampleCosmosDBOperations() { collection, bson.M{"fullname": "react"}) if err != nil { - util.PrintAndLog(fmt.Sprintf("cannot get document: %v", err)) + util.LogAndPanic(fmt.Errorf("cannot get document: %v", err)) } util.PrintAndLog("got document") util.PrintAndLog(fmt.Sprintf("document description: %s", doc["description"])) @@ -118,13 +117,13 @@ func ExampleCosmosDBOperations() { }, }) if err != nil { - util.PrintAndLog(fmt.Sprintf("cannot update document: %v", err)) + util.LogAndPanic(fmt.Errorf("cannot update document: %v", err)) } util.PrintAndLog("update document") - err = DeleteDcoument(session, accountName, collection, doc["_id"].(bson.ObjectId)) + err = DeleteDocument(session, accountName, collection, doc["_id"].(bson.ObjectId)) if err != nil { - util.PrintAndLog(fmt.Sprintf("cannot delete document: %v", err)) + util.LogAndPanic(fmt.Errorf("cannot delete document: %v", err)) } util.PrintAndLog("delete document") diff --git a/eventhubs/eventhubs_test.go b/eventhubs/eventhubs_test.go index fb05dcb52..bc0558970 100644 --- a/eventhubs/eventhubs_test.go +++ b/eventhubs/eventhubs_test.go @@ -19,7 +19,6 @@ import ( ) const ( - location = "westus2" nsName = "ehtest-04-ns" hubName = "ehtest-04-hub" @@ -45,7 +44,7 @@ func TestMain(m *testing.M) { os.Exit(code) } -func ExampleEventHubs() { +func Example_eventHubs() { ctx, cancel := context.WithTimeout(context.Background(), 300*time.Second) // defer goes in LIFO order defer cancel() @@ -58,21 +57,21 @@ func ExampleEventHubs() { _, err = resources.CreateGroup(ctx, config.GroupName()) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created group") // create Event Hubs namespace _, err = CreateNamespace(ctx, nsName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created namespace") // create Event Hubs hub _, err = CreateHub(ctx, nsName, hubName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created hub") diff --git a/eventhubs/send_events.go b/eventhubs/send_events.go index bf3b52a15..c53bcd87e 100644 --- a/eventhubs/send_events.go +++ b/eventhubs/send_events.go @@ -4,9 +4,6 @@ import ( "context" "log" - // "bufio" - // "os" - "github.com/Azure/azure-amqp-common-go/aad" eventhubs "github.com/Azure/azure-event-hubs-go" ) @@ -20,28 +17,27 @@ func Send(ctx context.Context, nsName, hubName string) { // get an existing hub hub, err := eventhubs.NewHub(nsName, hubName, provider) - defer hub.Close(ctx) if err != nil { log.Fatalf("failed to get hub: %s\n", err) } + defer func() { + if err := hub.Close(ctx); err != nil { + log.Fatalf("failed to close event hub: %+v", err) + } + }() // get info about partitions in hub info, err := hub.GetRuntimeInformation(ctx) if err != nil { - log.Fatalf("failed to get runtime info: %s\n", err) + log.Fatalf("failed to get runtime info: %+v", err) } log.Printf("partition IDs: %s\n", info.PartitionIDs) - // send messages to hub - // reader := bufio.NewReader(os.Stdin) - // for { - // fmt.Printf("Input message to send: ") - // text, _ := reader.ReadString('\n') - // hub.Send(ctx, eventhubs.NewEventFromString(text)) - // } - // send message to hub. // by default the destination partition is selected round-robin by the // Event Hubs service - hub.Send(ctx, eventhubs.NewEventFromString("test-message")) + err = hub.Send(ctx, eventhubs.NewEventFromString("test-message")) + if err != nil { + log.Fatalf("failed to send messages: %+v", err) + } } diff --git a/go.mod b/go.mod new file mode 100644 index 000000000..219f2c753 --- /dev/null +++ b/go.mod @@ -0,0 +1,39 @@ +module github.com/Azure-Samples/azure-sdk-for-go-samples + +go 1.13 + +require ( + cloud.google.com/go v0.39.0 // indirect + contrib.go.opencensus.io/exporter/ocagent v0.4.12 // indirect + git.apache.org/thrift.git v0.12.0 // indirect + github.com/Azure/azure-amqp-common-go v1.1.4 + github.com/Azure/azure-event-hubs-go v1.3.0 + github.com/Azure/azure-pipeline-go v0.1.9 // indirect + github.com/Azure/azure-sdk-for-go v39.2.0+incompatible + github.com/Azure/azure-storage-blob-go v0.0.0-20181023070848-cf01652132cc + github.com/Azure/go-autorest v13.3.2+incompatible // indirect + github.com/Azure/go-autorest/autorest v0.9.4 + github.com/Azure/go-autorest/autorest/adal v0.8.1 + github.com/Azure/go-autorest/autorest/azure/auth v0.4.2 + github.com/Azure/go-autorest/autorest/date v0.2.0 + github.com/Azure/go-autorest/autorest/to v0.3.0 + github.com/Azure/go-autorest/autorest/validation v0.2.0 // indirect + github.com/denisenkom/go-mssqldb v0.0.0-20190515213511-eb9f6a1743f3 + github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 + github.com/gobuffalo/envy v1.7.0 + github.com/golang/lint v0.0.0-20180702182130-06c8688daad7 // indirect + github.com/grpc-ecosystem/grpc-gateway v1.9.0 // indirect + github.com/hashicorp/golang-lru v0.5.1 // indirect + github.com/marstr/randname v0.0.0-20181206212954-d5b0f288ab8c + github.com/openzipkin/zipkin-go v0.1.6 + github.com/pkg/errors v0.8.1 + github.com/rogpeppe/go-internal v1.3.0 // indirect + github.com/satori/go.uuid v1.2.0 + go.opencensus.io v0.21.0 + golang.org/x/net v0.0.0-20190520210107-018c4d40a106 // indirect + golang.org/x/sync v0.0.0-20190423024810-112230192c58 // indirect + golang.org/x/sys v0.0.0-20190520201301-c432e742b0af // indirect + golang.org/x/text v0.3.2 // indirect + google.golang.org/genproto v0.0.0-20190516172635-bb713bdc0e52 // indirect + google.golang.org/grpc v1.20.1 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 000000000..50120a153 --- /dev/null +++ b/go.sum @@ -0,0 +1,290 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.37.4/go.mod h1:NHPJ89PdicEuT9hdPXMROBD91xc5uRDxsMtSB16k7hw= +cloud.google.com/go v0.39.0 h1:UgQP9na6OTfp4dsAiz/eFpFA1C6tPdH5wiRdi19tuMw= +cloud.google.com/go v0.39.0/go.mod h1:rVLT6fkc8chs9sfPtFc1SBH6em7n+ZoXaG+87tDISts= +contrib.go.opencensus.io/exporter/ocagent v0.4.12/go.mod h1:450APlNTSR6FrvC3CTRqYosuDstRB9un7SOx2k/9ckA= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +git.apache.org/thrift.git v0.12.0/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +github.com/Azure/azure-amqp-common-go v1.1.4 h1:DmPXxmLZwi/71CgRTZIKR6yiKEW3eC42S4gSBhfG7y0= +github.com/Azure/azure-amqp-common-go v1.1.4/go.mod h1:FhZtXirFANw40UXI2ntweO+VOkfaw8s6vZxUiRhLYW8= +github.com/Azure/azure-event-hubs-go v1.3.0 h1:aBmZibgiOAoscMC23NEZAUivfRjFdAzouYFAHuHWjxs= +github.com/Azure/azure-event-hubs-go v1.3.0/go.mod h1:me2m3+0WC7G7JRBTWI5SQ81s2TYyOqgV3JIpYg86jZA= +github.com/Azure/azure-pipeline-go v0.1.8/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= +github.com/Azure/azure-pipeline-go v0.1.9 h1:u7JFb9fFTE6Y/j8ae2VK33ePrRqJqoCM/IWkQdAZ+rg= +github.com/Azure/azure-pipeline-go v0.1.9/go.mod h1:XA1kFWRVhSK+KNFiOhfv83Fv8L9achrP7OxIzeTn1Yg= +github.com/Azure/azure-sdk-for-go v21.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v29.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v38.2.0+incompatible h1:ZeCdp1E/V5lI8oLR/BjWQh0OW9aFBYlgXGKRVIWNPXY= +github.com/Azure/azure-sdk-for-go v38.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v39.2.0+incompatible h1:zeY2FNH9mauj53XcRJQ2JVSNH0M+eYxeWhep8nnhNoc= +github.com/Azure/azure-sdk-for-go v39.2.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-storage-blob-go v0.0.0-20181022225951-5152f14ace1c/go.mod h1:oGfmITT1V6x//CswqY2gtAHND+xIP64/qL7a5QJix0Y= +github.com/Azure/azure-storage-blob-go v0.0.0-20181023070848-cf01652132cc h1:BElWmFfsryQD72OcovStKpkIcd4e9ozSkdsTNQDSHGk= +github.com/Azure/azure-storage-blob-go v0.0.0-20181023070848-cf01652132cc/go.mod h1:oGfmITT1V6x//CswqY2gtAHND+xIP64/qL7a5QJix0Y= +github.com/Azure/go-autorest v11.0.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest v11.1.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest v12.1.0+incompatible h1:x0sVyfVo0Qw9jcgVHuKIAiTHGRvQ9PsJP+43TVPV/DM= +github.com/Azure/go-autorest v12.1.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest v13.3.2+incompatible h1:VxzPyuhtnlBOzc4IWCZHqpyH2d+QMLQEuy3wREyY4oc= +github.com/Azure/go-autorest v13.3.2+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI= +github.com/Azure/go-autorest/autorest v0.9.3/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= +github.com/Azure/go-autorest/autorest v0.9.4 h1:1cM+NmKw91+8h5vfjgzK4ZGLuN72k87XVZBWyGwNjUM= +github.com/Azure/go-autorest/autorest v0.9.4/go.mod h1:GsRuLYvwzLjjjRoWEIyMUaYq8GNUx2nRB378IPt/1p0= +github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0= +github.com/Azure/go-autorest/autorest/adal v0.8.0/go.mod h1:Z6vX6WXXuyieHAXwMj0S6HY6e6wcHn37qQMBQlvY3lc= +github.com/Azure/go-autorest/autorest/adal v0.8.1 h1:pZdL8o72rK+avFWl+p9nE8RWi1JInZrWJYlnpfXJwHk= +github.com/Azure/go-autorest/autorest/adal v0.8.1/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q= +github.com/Azure/go-autorest/autorest/azure/auth v0.4.2 h1:iM6UAvjR97ZIeR93qTcwpKNMpV+/FTWjwEbuPD495Tk= +github.com/Azure/go-autorest/autorest/azure/auth v0.4.2/go.mod h1:90gmfKdlmKgfjUpnCEpOJzsUEjrWDSLwHIG73tSXddM= +github.com/Azure/go-autorest/autorest/azure/cli v0.3.1 h1:LXl088ZQlP0SBppGFsRZonW6hSvwgL5gRByMbvUbx8U= +github.com/Azure/go-autorest/autorest/azure/cli v0.3.1/go.mod h1:ZG5p860J94/0kI9mNJVoIoLgXcirM2gF5i2kWloofxw= +github.com/Azure/go-autorest/autorest/date v0.1.0/go.mod h1:plvfp3oPSKwf2DNjlBjWF/7vwR+cUD/ELuzDCXwHUVA= +github.com/Azure/go-autorest/autorest/date v0.2.0 h1:yW+Zlqf26583pE43KhfnhFcdmSWlm5Ew6bxipnr/tbM= +github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= +github.com/Azure/go-autorest/autorest/mocks v0.1.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.2.0/go.mod h1:OTyCOPRA2IgIlWxVYxBee2F5Gr4kF2zd2J5cFRaIDN0= +github.com/Azure/go-autorest/autorest/mocks v0.3.0 h1:qJumjCaCudz+OcqE9/XtEPfvtOjOmKaui4EOpFI6zZc= +github.com/Azure/go-autorest/autorest/mocks v0.3.0/go.mod h1:a8FDP3DYzQ4RYfVAxAN3SVSiiO77gL2j2ronKKP0syM= +github.com/Azure/go-autorest/autorest/to v0.3.0 h1:zebkZaadz7+wIQYgC7GXaz3Wb28yKYfVkkBKwc38VF8= +github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= +github.com/Azure/go-autorest/autorest/validation v0.2.0 h1:15vMO4y76dehZSq7pAaOLQxC6dZYsSrj2GQpflyM/L4= +github.com/Azure/go-autorest/autorest/validation v0.2.0/go.mod h1:3EEqHnBxQGHXRYq3HT1WyXAvT7LLY3tl70hw6tQIbjI= +github.com/Azure/go-autorest/logger v0.1.0 h1:ruG4BSDXONFRrZZJ2GUXDiUyVpayPmb1GnWeHDdaNKY= +github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6LSNgds39diKLz7Vrc= +github.com/Azure/go-autorest/tracing v0.5.0 h1:TRn4WjSnkcSy5AEG3pnbtFSwNtwzjr4VYyQflFE619k= +github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/denisenkom/go-mssqldb v0.0.0-20190515213511-eb9f6a1743f3 h1:tkum0XDgfR0jcVVXuTsYv/erY2NnEDqwRojbxR1rBYA= +github.com/denisenkom/go-mssqldb v0.0.0-20190515213511-eb9f6a1743f3/go.mod h1:zAg7JM8CkOJ43xKXIj7eRO9kmWm/TW578qo+oDO6tuM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dimchansky/utfbom v1.0.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= +github.com/dimchansky/utfbom v1.1.0 h1:FcM3g+nofKgUteL8dm/UpdRXNC9KmADgTpLKsu0TRo4= +github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8= +github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/fortytw2/leaktest v1.2.0 h1:cj6GCiwJDH7l3tMHLjZDo0QqPtrXJiWSI9JgpeQKw+Q= +github.com/fortytw2/leaktest v1.2.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is= +github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/gobuffalo/envy v1.7.0 h1:GlXgaiBkmrYMHco6t4j7SacKO4XUjvh5pwXh0f4uxXU= +github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= +github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= +github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= +github.com/gorilla/mux v1.6.2 h1:Pgr17XVTNXAk3q/r4CpKzC5xBM/qW1uVLV+IhRZpIIk= +github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/grpc-ecosystem/grpc-gateway v1.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/grpc-ecosystem/grpc-gateway v1.6.2/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= +github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/jpillora/backoff v0.0.0-20170918002102-8eab2debe79d/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= +github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7 h1:K//n/AqR5HjG3qxbrBCL4vJPW0MVFSs9CPK1OOJdRME= +github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/konsorten/go-windows-terminal-sequences v0.0.0-20180402223658-b729f2633dfe/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/marstr/collection v1.0.1 h1:j61osRfyny7zxBlLRtoCvOZ2VX7HEyybkZcsLNLJ0z0= +github.com/marstr/collection v1.0.1/go.mod h1:HHDXVxjLO3UYCBXJWY+J/ZrxCUOYqrO66ob1AzIsmYA= +github.com/marstr/randname v0.0.0-20181206212954-d5b0f288ab8c h1:JE+MDz5rhFN5EC9Dj/N8dLYKboTWm6FXeWhnyKVj0vA= +github.com/marstr/randname v0.0.0-20181206212954-d5b0f288ab8c/go.mod h1:Xc224oUXd7/sKMjWKl17cfkYOKQ1S+HSOW7YHEGXauI= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= +github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= +github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/openzipkin/zipkin-go v0.1.3/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/openzipkin/zipkin-go v0.1.6 h1:yXiysv1CSK7Q5yjGy1710zZGnsbMUIjluWBxtLXHPBo= +github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.3.0 h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= +github.com/sirupsen/logrus v1.1.1/go.mod h1:zrgwTnHtNr00buQ1vSptGe8m1f/BbgsPukg8qsT7A+A= +github.com/sirupsen/logrus v1.2.0 h1:juTguoYk5qI21pwyTXY3B3Y5cOTH3ZUyZCg1v/mihuo= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +go.opencensus.io v0.19.3/go.mod h1:gug0GbSHa8Pafr0d2urOSgoXHZ6x/RUlaiT0d9pqb4A= +go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= +go.opencensus.io v0.21.0 h1:mU6zScU4U1YAFPHEHYk+3JC4SY7JxgkqS10ZOSyksNg= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.2 h1:75k/FF0Q2YM8QYo07VPddOLBslDt1MZOdEslOHvmzAs= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20181001203147-e3636079e1a4/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190325154230-a5d413f7728c/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f h1:R423Cnkcp5JABoeemiGEPlt9tHXFfw5kvc0yqlxRPWo= +golang.org/x/crypto v0.0.0-20190513172903-22d7a77e9e5f/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 h1:ULYEB3JvPRE/IfO+9uO7vKV/xzVTO7XPAwm8xbf4w2g= +golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20181217174547-8f45f776aaf1/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181106065722-10aee1819953/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190520210107-018c4d40a106 h1:EZofHp/BzEf3j39/+7CX1JvH0WaPG+ikBrqAdAPf+GM= +golang.org/x/net v0.0.0-20190520210107-018c4d40a106/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181218192612-074acd46bca6/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190520201301-c432e742b0af h1:NXfmMfXz6JqGfG3ikSxcz2N93j6DgScr19Oo2uwFu88= +golang.org/x/sys v0.0.0-20190520201301-c432e742b0af/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20181219222714-6e267b5cc78e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181220000619-583d854617af/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= +google.golang.org/api v0.5.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181219182458-5a97ab628bfb/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190508193815-b515fa19cec8/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190516172635-bb713bdc0e52/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20180920025451-e3ad64cb4ed3/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +pack.ag/amqp v0.8.0/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= +pack.ag/amqp v0.11.0 h1:ot/IA0enDkt4/c8xfbCO7AZzjM4bHys/UffnFmnHUnU= +pack.ag/amqp v0.11.0/go.mod h1:4/cbmt4EJXSKlG6LCfWHoqmN0uFdy5i/+YFz+fTfhV4= diff --git a/graphrbac/graph.go b/graphrbac/graph.go index cc02ff81c..c322c7f90 100644 --- a/graphrbac/graph.go +++ b/graphrbac/graph.go @@ -75,8 +75,8 @@ func AddClientSecret(ctx context.Context, objID string) (autorest.Response, erro graphrbac.PasswordCredentialsUpdateParameters{ Value: &[]graphrbac.PasswordCredential{ { - StartDate: &date.Time{time.Now()}, - EndDate: &date.Time{time.Date(2018, time.December, 20, 22, 0, 0, 0, time.UTC)}, + StartDate: &date.Time{Time: time.Now()}, + EndDate: &date.Time{Time: time.Date(2018, time.December, 20, 22, 0, 0, 0, time.UTC)}, Value: to.StringPtr("052265a2-bdc8-49aa-81bd-ecf7e9fe0c42"), // this will become the client secret! Record this value, there is no way to get it back KeyID: to.StringPtr("08023993-9209-4580-9d4a-e060b44a64b8"), }, diff --git a/graphrbac/graph_test.go b/graphrbac/graph_test.go index 7eed0c0e2..64ec3eaa3 100644 --- a/graphrbac/graph_test.go +++ b/graphrbac/graph_test.go @@ -43,49 +43,49 @@ func ExampleCreateServicePrincipal() { app, err := CreateADApplication(ctx) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("ad app created") sp, err := CreateServicePrincipal(ctx, *app.AppID) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("service principal created") _, err = AddClientSecret(ctx, *app.ObjectID) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("added client secret") _, err = resources.CreateGroup(ctx, config.GroupName()) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created resource group") list, err := authorization.ListRoleDefinitions(ctx, "roleName eq 'Contributor'") if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("list contributor roledefs at group scope") _, err = authorization.AssignRole(ctx, *sp.ObjectID, *list.Values()[0].ID) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("assigned new principal to first contributor role") if !config.KeepResources() { _, err = resources.DeleteGroup(ctx, config.GroupName()) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = DeleteADApplication(ctx, *app.ObjectID) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } } @@ -103,14 +103,14 @@ func ExampleCreateADGroup() { group, err := CreateADGroup(ctx) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("ad group created") if !config.KeepResources() { _, err = DeleteADGroup(ctx, *group.ObjectID) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("ad group deleted") } diff --git a/hdinsight/hdinsight_test.go b/hdinsight/hdinsight_test.go index 24cf7322f..5ea4535e4 100644 --- a/hdinsight/hdinsight_test.go +++ b/hdinsight/hdinsight_test.go @@ -48,31 +48,27 @@ func ExampleCreateHadoopCluster() { _, err := resources.CreateGroup(ctx, rgName) if err != nil { - util.PrintAndLog(err.Error()) - return + util.LogAndPanic(err) } util.PrintAndLog("created resource group") storageAccountName := strings.ToLower(config.AppendRandomSuffix("exampleforhadoop")) sa, err := storage.CreateStorageAccount(context.Background(), storageAccountName, rgName) if err != nil { - util.PrintAndLog(err.Error()) - return + util.LogAndPanic(err) } util.PrintAndLog("created storage account") containerName := strings.ToLower(config.AppendRandomSuffix("hadoopfilesystem")) _, err = storage.CreateContainer(context.Background(), storageAccountName, rgName, containerName) if err != nil { - util.PrintAndLog(err.Error()) - return + util.LogAndPanic(err) } util.PrintAndLog("created container") keys, err := storage.GetAccountKeys(context.Background(), storageAccountName, rgName) if err != nil { - util.PrintAndLog(err.Error()) - return + util.LogAndPanic(err) } util.PrintAndLog("retrieved storage account keys") @@ -83,8 +79,7 @@ func ExampleCreateHadoopCluster() { Key: *(*keys.Keys)[0].Value, }) if err != nil { - util.PrintAndLog(err.Error()) - return + util.LogAndPanic(err) } util.PrintAndLog("created cluster") diff --git a/insights/insights.go b/insights/insights.go index c540fd018..c153c693d 100644 --- a/insights/insights.go +++ b/insights/insights.go @@ -54,12 +54,12 @@ func GetMetricsData(ctx context.Context, resourceID string, metrics []string) ([ if err != nil { return nil, err } - metricData := []string{} + var metricData []string for _, v := range *resp.Value { for _, t := range *v.Timeseries { for _, mv := range *t.Data { - min := float64(0.0) - max := float64(0.0) + min := 0.0 + max := 0.0 if mv.Minimum != nil { min = *mv.Minimum } diff --git a/insights/insights_test.go b/insights/insights_test.go index 3c014e580..7497f1518 100644 --- a/insights/insights_test.go +++ b/insights/insights_test.go @@ -38,13 +38,12 @@ func TestMain(m *testing.M) { } flag.Parse() - code := m.Run() - os.Exit(code) + os.Exit(m.Run()) } // ExampleGetMetricsForWebsite creates a website then uses the insights package // to retrieve the queryable metric names and values. -func ExampleGetMetricsForWebsite() { +func Example_getMetricsForWebsite() { var groupName = config.GenerateGroupName("GetMetricsForWebsite") config.SetGroupName(groupName) ctx, cancel := context.WithTimeout(context.Background(), time.Minute*10) @@ -52,16 +51,14 @@ func ExampleGetMetricsForWebsite() { _, err := resources.CreateGroup(ctx, config.GroupName()) if err != nil { - util.PrintAndLog(err.Error()) - return + util.LogAndPanic(err) } util.PrintAndLog("created resource group") defer resources.Cleanup(ctx) webSite, err := web.CreateContainerSite(ctx, siteName, "appsvc/sample-hello-world:latest") if err != nil { - util.PrintAndLog(err.Error()) - return + util.LogAndPanic(err) } util.PrintAndLog("created web site") @@ -69,8 +66,7 @@ func ExampleGetMetricsForWebsite() { // will have its own set of queryable metrics. metrics, err := ListMetricDefinitions(*webSite.ID) if err != nil { - util.PrintAndLog(err.Error()) - return + util.LogAndPanic(err) } util.PrintAndLog("available metrics:") @@ -79,8 +75,7 @@ func ExampleGetMetricsForWebsite() { // here, CpuTime and Requests are the non-localized metric names metricData, err := GetMetricsData(ctx, *webSite.ID, []string{"CpuTime", "Requests"}) if err != nil { - util.PrintAndLog(err.Error()) - return + util.LogAndPanic(err) } util.PrintAndLog("metric data:") diff --git a/internal/config/env.go b/internal/config/env.go index 85b053556..9ae21db8b 100644 --- a/internal/config/env.go +++ b/internal/config/env.go @@ -12,7 +12,9 @@ import ( // ParseEnvironment loads a sibling `.env` file then looks through all environment // variables to set global configuration. func ParseEnvironment() error { - envy.Load() + if err := envy.Load(); err != nil { + return err + } azureEnv, _ := azure.EnvironmentFromName("AzurePublicCloud") // shouldn't fail authorizationServerURL = azureEnv.ActiveDirectoryEndpoint @@ -39,25 +41,25 @@ func ParseEnvironment() error { // clientID clientID, err = envy.MustGet("AZURE_CLIENT_ID") if err != nil { - return fmt.Errorf("expected env vars not provided: %s\n", err) + return fmt.Errorf("expected env vars not provided: %+v", err) } // clientSecret clientSecret, err = envy.MustGet("AZURE_CLIENT_SECRET") - if err != nil && useDeviceFlow != true { // don't need a secret for device flow - return fmt.Errorf("expected env vars not provided: %s\n", err) + if err != nil && !useDeviceFlow { // don't need a secret for device flow + return fmt.Errorf("expected env vars not provided: %+v", err) } // tenantID (AAD) tenantID, err = envy.MustGet("AZURE_TENANT_ID") if err != nil { - return fmt.Errorf("expected env vars not provided: %s\n", err) + return fmt.Errorf("expected env vars not provided: %+v", err) } // subscriptionID (ARM) subscriptionID, err = envy.MustGet("AZURE_SUBSCRIPTION_ID") if err != nil { - return fmt.Errorf("expected env vars not provided: %s\n", err) + return fmt.Errorf("expected env vars not provided: %+v", err) } return nil diff --git a/internal/iam/authorizers.go b/internal/iam/authorizers.go index 7cb8fdda5..5f4454ecd 100644 --- a/internal/iam/authorizers.go +++ b/internal/iam/authorizers.go @@ -161,7 +161,6 @@ func GetKeyvaultAuthorizer() (autorest.Authorizer, error) { } func getAuthorizerForResource(grantType OAuthGrantType, resource string) (autorest.Authorizer, error) { - var a autorest.Authorizer var err error @@ -198,9 +197,12 @@ func getAuthorizerForResource(grantType OAuthGrantType, resource string) (autore // GetResourceManagementTokenHybrid retrieves auth token for hybrid environment func GetResourceManagementTokenHybrid(activeDirectoryEndpoint, tokenAudience string) (adal.OAuthTokenProvider, error) { - var tokenProvider adal.OAuthTokenProvider oauthConfig, err := adal.NewOAuthConfig(activeDirectoryEndpoint, config.TenantID()) - tokenProvider, err = adal.NewServicePrincipalToken( + if err != nil { + return nil, err + } + + tokenProvider, err := adal.NewServicePrincipalToken( *oauthConfig, config.ClientID(), config.ClientSecret(), diff --git a/internal/util/util.go b/internal/util/util.go index c3877db15..b8c1536ab 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -13,6 +13,11 @@ func PrintAndLog(message string) { fmt.Println(message) } +func LogAndPanic(err error) { + PrintAndLog(err.Error()) + panic(err) +} + func Contains(array []string, element string) bool { for _, e := range array { if e == element { @@ -30,6 +35,8 @@ func ReadJSON(path string) (*map[string]interface{}, error) { log.Fatalf("failed to read template file: %v\n", err) } contents := make(map[string]interface{}) - json.Unmarshal(data, &contents) + if err := json.Unmarshal(data, &contents); err != nil { + return nil, err + } return &contents, nil } diff --git a/keyvault/key.go b/keyvault/key.go index 4ed6b483f..46ea24198 100644 --- a/keyvault/key.go +++ b/keyvault/key.go @@ -5,7 +5,6 @@ import ( "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" - "github.com/Azure/azure-sdk-for-go/services/keyvault/2016-10-01/keyvault" "github.com/Azure/go-autorest/autorest/to" ) diff --git a/keyvault/keyvault_test.go b/keyvault/keyvault_test.go index 0268613d3..abd545898 100644 --- a/keyvault/keyvault_test.go +++ b/keyvault/keyvault_test.go @@ -29,12 +29,12 @@ func TestMain(m *testing.M) { var err error err = config.ParseEnvironment() if err != nil { - log.Fatalf("failed to parse env: %v\n", err.Error()) + log.Fatalf("failed to parse env: %+v", err) } err = config.AddFlags() if err != nil { - log.Fatalf("failed to parse flags: %v\n", err.Error()) + log.Fatalf("failed to parse flags: %+v", err) } flag.Parse() @@ -51,24 +51,24 @@ func ExampleSetVaultPermissions() { _, err := resources.CreateGroup(ctx, config.GroupName()) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = CreateVault(ctx, kvName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("vault created") _, err = SetVaultPermissions(ctx, kvName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("set vault permissions") _, err = CreateKey(ctx, kvName, keyName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created key") diff --git a/keyvault/pass-manager.go b/keyvault/pass-manager.go index 9127fff5b..4d731ab30 100644 --- a/keyvault/pass-manager.go +++ b/keyvault/pass-manager.go @@ -43,7 +43,7 @@ var ( vaultName string ) -func main() { +func PassManager() { flag.Parse() if os.Getenv("AZURE_TENANT_ID") == "" || os.Getenv("AZURE_CLIENT_ID") == "" || os.Getenv("AZURE_CLIENT_SECRET") == "" || os.Getenv("KVAULT") == "" { diff --git a/keyvault/vault.go b/keyvault/vault.go index 2c8db6e1f..2ef82e7b5 100644 --- a/keyvault/vault.go +++ b/keyvault/vault.go @@ -69,7 +69,7 @@ func CreateVaultWithPolicies(ctx context.Context, vaultName, userID string) (vau return } - apList := []keyvault.AccessPolicyEntry{} + var apList []keyvault.AccessPolicyEntry ap := keyvault.AccessPolicyEntry{ TenantID: &tenantID, Permissions: &keyvault.Permissions{ diff --git a/msi/msi.go b/msi/msi.go index 00feede07..31e3370b8 100644 --- a/msi/msi.go +++ b/msi/msi.go @@ -10,7 +10,7 @@ import ( "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" - "github.com/Azure/azure-sdk-for-go/services/preview/msi/mgmt/2015-08-31-preview/msi" + "github.com/Azure/azure-sdk-for-go/services/msi/mgmt/2018-11-30/msi" "github.com/Azure/go-autorest/autorest/to" "github.com/pkg/errors" ) diff --git a/network/hybrid/network.go b/network/hybrid/network.go index 700f453bc..21be04cb7 100644 --- a/network/hybrid/network.go +++ b/network/hybrid/network.go @@ -10,13 +10,12 @@ import ( "fmt" "log" + "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" + "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" "github.com/Azure/azure-sdk-for-go/profiles/2017-03-09/network/mgmt/network" "github.com/Azure/go-autorest/autorest" "github.com/Azure/go-autorest/autorest/azure" "github.com/Azure/go-autorest/autorest/to" - - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" ) const ( @@ -67,7 +66,7 @@ func getNicClient(activeDirectoryEndpoint, tokenAudience string) network.Interfa return nicClient } -func getSubnetsClient(activeDirectoryEndpoint, tokenAudience string) network.SubnetsClient { +func getSubnetClient(activeDirectoryEndpoint, tokenAudience string) network.SubnetsClient { token, err := iam.GetResourceManagementTokenHybrid(activeDirectoryEndpoint, tokenAudience) if err != nil { log.Fatal(fmt.Sprintf(errorPrefix, "subnet", fmt.Sprintf("Cannot generate token. Error details: %v.", err))) @@ -260,7 +259,7 @@ func GetNetworkSecurityGroup(ctx context.Context, nsgName string) (network.Secur // GetVirtualNetworkSubnet retrieves a virtual netwrok subnet by its name func GetVirtualNetworkSubnet(ctx context.Context, vnetName string, subnetName string) (network.Subnet, error) { environment := config.Environment() - subnetsClient := getSubnetsClient(environment.ActiveDirectoryEndpoint, environment.TokenAudience) + subnetsClient := getSubnetClient(environment.ActiveDirectoryEndpoint, environment.TokenAudience) return subnetsClient.Get(ctx, config.GroupName(), vnetName, subnetName, "") } diff --git a/network/hybrid/network_test.go b/network/hybrid/network_test.go index 847f25c95..3f8a93e12 100644 --- a/network/hybrid/network_test.go +++ b/network/hybrid/network_test.go @@ -9,22 +9,19 @@ import ( "context" "flag" "fmt" - "log" "os" "testing" "time" - hybridresources "github.com/Azure-Samples/azure-sdk-for-go-samples/resources/hybrid" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/util" + hybridresources "github.com/Azure-Samples/azure-sdk-for-go-samples/resources/hybrid" ) var ( virtualNetworkName = "vnet1" subnetName = "subnet1" nsgName = "nsg1" - nicName = "nic1" ipName = "ip1" networkInterfaceName = "netinterface1" ) @@ -67,11 +64,11 @@ func TestNetwork(t *testing.T) { _, err = hybridresources.CreateGroup(ctx) if err != nil { - t.Fatalf("could not create group %v\n", err.Error()) + t.Fatalf("could not create group %+v", err) } _, err = CreateVirtualNetworkAndSubnets(context.Background(), virtualNetworkName, subnetName) if err != nil { - t.Fatalf("could not create vnet: %v\n", err.Error()) + t.Fatalf("could not create vnet: %+v", err) } t.Logf("created vnet") } @@ -86,11 +83,11 @@ func ExampleCreateNetworkSecurityGroup() { _, err := hybridresources.CreateGroup(ctx) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = CreateNetworkSecurityGroup(ctx, nsgName) if err != nil { - log.Fatal(fmt.Sprintf("Cannot create network security group. Error details: %s", err.Error())) + util.LogAndPanic(fmt.Errorf("cannot create network security group. Error details: %+v", err)) } fmt.Println("VNET security group created") @@ -107,11 +104,11 @@ func ExampleCreatePublicIP() { _, err := hybridresources.CreateGroup(ctx) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = CreatePublicIP(ctx, ipName) if err != nil { - log.Fatal(fmt.Sprintf("Cannot create public IP. Error details: %s", err.Error())) + util.LogAndPanic(fmt.Errorf("cannot create public IP. Error details: %+v", err)) } fmt.Println("Public IP created") @@ -129,12 +126,12 @@ func ExampleCreateNetworkInterface() { _, err := hybridresources.CreateGroup(ctx) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = CreateNetworkInterface(ctx, networkInterfaceName, nsgName, virtualNetworkName, subnetName, ipName) if err != nil { - log.Fatal(fmt.Sprintf("Cannot create network interface. Error details: %s", err.Error())) + util.LogAndPanic(fmt.Errorf("cannot create network interface. Error details: %+v", err)) } fmt.Println("Network interface created") diff --git a/network/ipaddress.go b/network/ipaddress.go index c7f05974d..54f0b5b10 100644 --- a/network/ipaddress.go +++ b/network/ipaddress.go @@ -9,15 +9,12 @@ import ( "context" "fmt" - "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network" - "github.com/Azure/go-autorest/autorest/to" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" + "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-11-01/network" + "github.com/Azure/go-autorest/autorest/to" ) -// Public IP Addresses - func getIPClient() network.PublicIPAddressesClient { ipClient := network.NewPublicIPAddressesClient(config.SubscriptionID()) auth, _ := iam.GetResourceManagementAuthorizer() diff --git a/network/loadbalancer.go b/network/loadbalancer.go index 7ce33f726..ee7a8a5c6 100644 --- a/network/loadbalancer.go +++ b/network/loadbalancer.go @@ -9,15 +9,12 @@ import ( "context" "fmt" - "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network" - "github.com/Azure/go-autorest/autorest/to" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" + "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-11-01/network" + "github.com/Azure/go-autorest/autorest/to" ) -// Load balancers - func getLBClient() network.LoadBalancersClient { lbClient := network.NewLoadBalancersClient(config.SubscriptionID()) auth, _ := iam.GetResourceManagementAuthorizer() @@ -86,7 +83,7 @@ func CreateLoadBalancer(ctx context.Context, lbName, pipName string) (lb network BackendPort: to.Int32Ptr(80), IdleTimeoutInMinutes: to.Int32Ptr(4), EnableFloatingIP: to.BoolPtr(false), - LoadDistribution: network.Default, + LoadDistribution: network.LoadDistributionDefault, FrontendIPConfiguration: &network.SubResource{ ID: to.StringPtr(fmt.Sprintf("/%s/%s/frontendIPConfigurations/%s", idPrefix, lbName, frontEndIPConfigName)), }, diff --git a/network/network_test.go b/network/network_test.go index 87069e74a..36741283e 100644 --- a/network/network_test.go +++ b/network/network_test.go @@ -71,31 +71,31 @@ func TestNetwork(t *testing.T) { _, err := resources.CreateGroup(ctx, groupName) if err != nil { - t.Fatalf("failed to create group: %v\n", err.Error()) + t.Fatalf("failed to create group: %+v", err) } t.Logf("created group %s\n", groupName) _, err = CreateVirtualNetworkAndSubnets(ctx, virtualNetworkName, subnet1Name, subnet2Name) if err != nil { - t.Fatalf("failed to create vnet: %v\n", err.Error()) + t.Fatalf("failed to create vnet: %+v", err) } t.Logf("created vnet with 2 subnets") _, err = CreateNetworkSecurityGroup(ctx, nsgName) if err != nil { - t.Fatalf("failed to create NSG: %v\n", err.Error()) + t.Fatalf("failed to create NSG: %+v", err) } t.Logf("created network security group") _, err = CreatePublicIP(ctx, ipName) if err != nil { - t.Fatalf("failed to create public IP: %v\n", err.Error()) + t.Fatalf("failed to create public IP: %+v", err) } t.Logf("created public IP") _, err = CreateNIC(ctx, virtualNetworkName, subnet1Name, nsgName, ipName, nicName) if err != nil { - t.Fatalf("failed to create NIC: %v\n", err.Error()) + t.Fatalf("failed to create NIC: %+v", err) } t.Logf("created nic") } @@ -109,30 +109,30 @@ func ExampleCreateNIC() { _, err := resources.CreateGroup(ctx, config.GroupName()) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = CreateVirtualNetworkAndSubnets(ctx, virtualNetworkName, subnet1Name, subnet2Name) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created vnet and 2 subnets") _, err = CreateNetworkSecurityGroup(ctx, nsgName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created network security group") _, err = CreatePublicIP(ctx, ipName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created public IP") _, err = CreateNIC(ctx, virtualNetworkName, subnet1Name, nsgName, ipName, nicName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created nic") @@ -152,12 +152,12 @@ func ExampleCreateNetworkSecurityGroup() { _, err := resources.CreateGroup(ctx, config.GroupName()) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = CreateVirtualNetwork(ctx, virtualNetworkName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created vnet") @@ -166,50 +166,50 @@ func ExampleCreateNetworkSecurityGroup() { _, err = CreateNetworkSecurityGroup(ctx, frontNSGName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created frontend network security group") _, err = CreateNetworkSecurityGroup(ctx, backNSGName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created backend network security group") frontEndAddressPrefix := "10.0.0.0/16" _, err = CreateSubnetWithNetworkSecurityGroup(ctx, virtualNetworkName, "frontend", frontEndAddressPrefix, frontNSGName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created subnet with frontend network security group") _, err = CreateSubnetWithNetworkSecurityGroup(ctx, virtualNetworkName, "backend", "10.1.0.0/16", backNSGName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created subnet with backend network security group") _, err = CreateSSHRule(ctx, frontNSGName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created frontend SSH security rule") _, err = CreateHTTPRule(ctx, frontNSGName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created frontend HTTP security rule") _, err = CreateSQLRule(ctx, frontNSGName, frontEndAddressPrefix) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created frontend SQL security rule") _, err = CreateDenyOutRule(ctx, backNSGName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created backend deny out security rule") diff --git a/network/nic.go b/network/nic.go index 6ac17d2e3..e90906594 100644 --- a/network/nic.go +++ b/network/nic.go @@ -10,15 +10,12 @@ import ( "fmt" "log" - "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network" - "github.com/Azure/go-autorest/autorest/to" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" + "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-11-01/network" + "github.com/Azure/go-autorest/autorest/to" ) -// Network Interfaces (NIC's) - func getNicClient() network.InterfacesClient { nicClient := network.NewInterfacesClient(config.SubscriptionID()) auth, _ := iam.GetResourceManagementAuthorizer() diff --git a/network/securitygroups.go b/network/securitygroups.go index 8f45bcf81..d02523fb5 100644 --- a/network/securitygroups.go +++ b/network/securitygroups.go @@ -9,15 +9,12 @@ import ( "context" "fmt" - "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network" - "github.com/Azure/go-autorest/autorest/to" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" + "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-11-01/network" + "github.com/Azure/go-autorest/autorest/to" ) -// Network Security Groups - func getNsgClient() network.SecurityGroupsClient { nsgClient := network.NewSecurityGroupsClient(config.SubscriptionID()) a, _ := iam.GetResourceManagementAuthorizer() diff --git a/network/subnets.go b/network/subnets.go index 5a7d36ef0..e0d3780f4 100644 --- a/network/subnets.go +++ b/network/subnets.go @@ -9,15 +9,12 @@ import ( "context" "fmt" - "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network" - "github.com/Azure/go-autorest/autorest/to" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" + "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-11-01/network" + "github.com/Azure/go-autorest/autorest/to" ) -// VNet Subnets - func getSubnetsClient() network.SubnetsClient { subnetsClient := network.NewSubnetsClient(config.SubscriptionID()) auth, _ := iam.GetResourceManagementAuthorizer() diff --git a/network/network.go b/network/virtualnetwork.go similarity index 97% rename from network/network.go rename to network/virtualnetwork.go index 2b515f01b..6cbfc3f36 100644 --- a/network/network.go +++ b/network/virtualnetwork.go @@ -9,15 +9,12 @@ import ( "context" "fmt" - "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network" - "github.com/Azure/go-autorest/autorest/to" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" + "github.com/Azure/azure-sdk-for-go/services/network/mgmt/2019-11-01/network" + "github.com/Azure/go-autorest/autorest/to" ) -// Vnets - func getVnetClient() network.VirtualNetworksClient { vnetClient := network.NewVirtualNetworksClient(config.SubscriptionID()) a, _ := iam.GetResourceManagementAuthorizer() diff --git a/quickstarts/deploy-vm/main.go b/quickstarts/deploy-vm/main.go index ad4f83f16..b161c2105 100644 --- a/quickstarts/deploy-vm/main.go +++ b/quickstarts/deploy-vm/main.go @@ -45,6 +45,9 @@ func init() { } authInfo, err := readJSON(os.Getenv("AZURE_AUTH_LOCATION")) + if err != nil { + log.Fatalf("Failed to read JSON: %+v", err) + } clientData.SubscriptionID = (*authInfo)["subscriptionId"].(string) clientData.VMPassword = (*authInfo)["clientSecret"].(string) } @@ -149,6 +152,6 @@ func readJSON(path string) (*map[string]interface{}, error) { log.Fatalf("failed to read file: %v", err) } contents := make(map[string]interface{}) - json.Unmarshal(data, &contents) + _ = json.Unmarshal(data, &contents) return &contents, nil } diff --git a/resources/cleanup.go b/resources/cleanup.go index f54c8b904..1f68fd622 100644 --- a/resources/cleanup.go +++ b/resources/cleanup.go @@ -12,13 +12,12 @@ import ( "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" ) -// Cleanup deletes the rescource group created for the sample -func Cleanup(ctx context.Context) error { +// Cleanup deletes the resource group created for the sample +func Cleanup(ctx context.Context) { if config.KeepResources() { log.Println("keeping resources") - return nil + return } log.Println("deleting resources") - _, err := DeleteGroup(ctx, config.GroupName()) - return err + _, _ = DeleteGroup(ctx, config.GroupName()) } diff --git a/resources/deployment.go b/resources/deployment.go index 94e2d82fc..44b4f5cd6 100644 --- a/resources/deployment.go +++ b/resources/deployment.go @@ -9,10 +9,9 @@ import ( "context" "fmt" - "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" + "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources" ) func getDeploymentsClient() resources.DeploymentsClient { diff --git a/resources/deployment_test.go b/resources/deployment_test.go index ee819baa9..cda882d58 100644 --- a/resources/deployment_test.go +++ b/resources/deployment_test.go @@ -16,7 +16,7 @@ import ( "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/util" ) -func ExampleCreateTemplateDeployment() { +func Example_createTemplateDeployment() { groupName := config.GenerateGroupName("groups-template") config.SetGroupName(groupName) // TODO: don't rely on globals ctx, cancel := context.WithTimeout(context.Background(), 300*time.Second) @@ -25,7 +25,7 @@ func ExampleCreateTemplateDeployment() { _, err := CreateGroup(ctx, config.GroupName()) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } gopath := build.Default.GOPATH @@ -45,13 +45,13 @@ func ExampleCreateTemplateDeployment() { _, err = ValidateDeployment(ctx, deployName, template, params) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("validated VM template deployment") _, err = CreateDeployment(ctx, deployName, template, params) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created VM template deployment") @@ -59,19 +59,19 @@ func ExampleCreateTemplateDeployment() { vmUser := (*params)["vm_user"].(map[string]interface{})["value"].(string) vmPass := (*params)["vm_password"].(map[string]interface{})["value"].(string) - resource, err := GetResource(ctx, + r, err := GetResource(ctx, "Microsoft.Network", "publicIPAddresses", ipName, "2018-01-01") if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("got public IP info via get generic resource") log.Printf("Log in with ssh: %s@%s, password: %s", vmUser, - resource.Properties.(map[string]interface{})["ipAddress"].(string), + r.Properties.(map[string]interface{})["ipAddress"].(string), vmPass) // Output: diff --git a/resources/groups.go b/resources/groups.go index 7e192b176..9f29b5e4d 100644 --- a/resources/groups.go +++ b/resources/groups.go @@ -12,14 +12,12 @@ import ( "strings" "sync" - "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources" - + "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" + "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" + "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources" "github.com/Azure/go-autorest/autorest/azure" "github.com/Azure/go-autorest/autorest/azure/auth" "github.com/Azure/go-autorest/autorest/to" - - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" ) func getGroupsClient() resources.GroupsClient { @@ -95,7 +93,7 @@ func DeleteAllGroupsWithPrefix(ctx context.Context, prefix string) (futures []re log.Println("keeping resource groups") return } - for list, err := ListGroups(ctx); list.NotDone(); err = list.Next() { + for list, err := ListGroups(ctx); list.NotDone(); err = list.NextWithContext(ctx) { if err != nil { log.Fatalf("got error: %s", err) } diff --git a/resources/hybrid/cleanup.go b/resources/hybrid/cleanup.go index af55f5ffb..020e4db78 100644 --- a/resources/hybrid/cleanup.go +++ b/resources/hybrid/cleanup.go @@ -12,13 +12,12 @@ import ( "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" ) -// Cleanup deletes the rescource group created for the sample -func Cleanup(ctx context.Context) error { +// Cleanup deletes the resource group created for the sample +func Cleanup(ctx context.Context) { if config.KeepResources() { log.Println("Hybrid resources cleanup: keeping resources") - return nil + return } log.Println("Hybrid resources cleanup: deleting resources") - _, err := DeleteGroup(ctx) - return err + _, _ = DeleteGroup(ctx) } diff --git a/resources/hybrid/groups.go b/resources/hybrid/groups.go index 4faf005e7..7bcfca985 100644 --- a/resources/hybrid/groups.go +++ b/resources/hybrid/groups.go @@ -9,16 +9,11 @@ import ( "context" "log" + "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" + "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" "github.com/Azure/azure-sdk-for-go/profiles/2017-03-09/resources/mgmt/resources" "github.com/Azure/go-autorest/autorest" "github.com/Azure/go-autorest/autorest/to" - - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" -) - -const ( - errorPrefix = "Cannot create resource group, reason: %v" ) func getGroupsClient(activeDirectoryEndpoint, tokenAudience string) resources.GroupsClient { diff --git a/resources/hybrid/resources_test.go b/resources/hybrid/resources_test.go index e9b86d08c..2393797a2 100644 --- a/resources/hybrid/resources_test.go +++ b/resources/hybrid/resources_test.go @@ -37,7 +37,7 @@ func addLocalConfig() error { func TestGroupsHybrid(t *testing.T) { err := setupEnvironment() if err != nil { - t.Fatalf("could not set up environment: %v\n", err) + t.Fatalf("could not set up environment: %+v", err) } groupName := config.GenerateGroupName("resource-groups-hybrid") @@ -49,7 +49,7 @@ func TestGroupsHybrid(t *testing.T) { _, err = CreateGroup(ctx) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("resource group created") diff --git a/resources/provider.go b/resources/provider.go index 59d9e7235..1937be3c0 100644 --- a/resources/provider.go +++ b/resources/provider.go @@ -8,10 +8,9 @@ package resources import ( "context" - "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" + "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources" ) func getProviderClient() resources.ProvidersClient { diff --git a/resources/resources.go b/resources/resources.go index 28098275d..4b17cee4f 100644 --- a/resources/resources.go +++ b/resources/resources.go @@ -10,11 +10,10 @@ import ( "net/http" "net/url" - "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2017-05-10/resources" - "github.com/Azure/go-autorest/autorest" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" + "github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2019-05-01/resources" + "github.com/Azure/go-autorest/autorest" ) func getResourcesClient() resources.Client { @@ -60,5 +59,6 @@ func GetResource(ctx context.Context, resourceProvider, resourceType, resourceNa "", resourceType, resourceName, + apiVersion, ) } diff --git a/resources/resources_test.go b/resources/resources_test.go index be1558e6e..7d3621a2f 100644 --- a/resources/resources_test.go +++ b/resources/resources_test.go @@ -17,7 +17,7 @@ import ( ) const ( - CI_KEY_NAME = "TRAVIS" + CiKeyName = "TRAVIS" ) func TestMain(m *testing.M) { @@ -59,13 +59,14 @@ func TestGroups(t *testing.T) { var err error _, err = CreateGroup(ctx, config.GroupName()) if err != nil { - t.Fatalf("failed to create group: %v\n", err.Error()) + t.Fatalf("failed to create group: %+v", err) } t.Logf("created group: %s\n", config.GroupName()) } +// TODO -- remove or change this test since we are not using the travis CI now func TestGroupsWithAuthFile(t *testing.T) { - if _, is_ci := os.LookupEnv(CI_KEY_NAME); is_ci == true { + if _, isCi := os.LookupEnv(CiKeyName); isCi == true { t.Skipf("skipping auth file test in CI") } groupName := config.GenerateGroupName("resource-groups-authfile") @@ -77,7 +78,7 @@ func TestGroupsWithAuthFile(t *testing.T) { var err error _, err = CreateGroupWithAuthFile(ctx, config.GroupName()) if err != nil { - t.Fatalf("failed to create group: %v\n", err.Error()) + t.Fatalf("failed to create group: %+v", err) } t.Logf("created group with auth file: %s\n", config.GroupName()) } diff --git a/sql/dataplane.go b/sql/dataplane.go index 20d5500ee..7fc54aa11 100644 --- a/sql/dataplane.go +++ b/sql/dataplane.go @@ -85,7 +85,7 @@ func Query(db *sql.DB) error { rows, err := db.Query(queryString) if err != nil { - log.Fatal("query failed:", err.Error()) + log.Fatalf("query failed: %+v", err) } defer rows.Close() for rows.Next() { @@ -93,7 +93,7 @@ func Query(db *sql.DB) error { var name string err := rows.Scan(&id, &name) if err != nil { - return fmt.Errorf("query failed: %v", err) + return fmt.Errorf("query failed: %+v", err) } log.Printf(" id: %d\n name: %s\n", id, name) diff --git a/sql/sql.go b/sql/sql.go index 1c6d01576..a5a935376 100644 --- a/sql/sql.go +++ b/sql/sql.go @@ -8,8 +8,6 @@ package sql import ( "context" "fmt" - "log" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" "github.com/Azure/azure-sdk-for-go/services/preview/sql/mgmt/2015-05-01-preview/sql" @@ -17,8 +15,6 @@ import ( "github.com/Azure/go-autorest/autorest/to" ) -// Servers - func getServersClient() sql.ServersClient { serversClient := sql.NewServersClient(config.SubscriptionID()) a, _ := iam.GetResourceManagementAuthorizer() @@ -143,9 +139,3 @@ func CreateFirewallRules(ctx context.Context, serverName string) error { return err } - -// PrintInfo logs information on SQL user agent and ARM client -func PrintInfo() { - log.Printf("user agent string: %s\n", sql.UserAgent()) - log.Printf("SQL ARM Client version: %s\n", sql.Version()) -} diff --git a/sql/sql_test.go b/sql/sql_test.go index d94cfd40e..0a3a48811 100644 --- a/sql/sql_test.go +++ b/sql/sql_test.go @@ -36,7 +36,7 @@ func addLocalEnvAndParse() error { // parse env at top-level (also controls dotenv load) err := config.ParseEnvironment() if err != nil { - return fmt.Errorf("failed to add top-level env: %v", err.Error()) + return fmt.Errorf("failed to add top-level env: %+v", err) } return nil } @@ -45,7 +45,7 @@ func addLocalFlagsAndParse() error { // add top-level flags err := config.AddFlags() if err != nil { - return fmt.Errorf("failed to add top-level flags: %v", err.Error()) + return fmt.Errorf("failed to add top-level flags: %+v", err) } flag.StringVar(&serverName, "sqlServerName", serverName, "Name for SQL server.") @@ -95,7 +95,7 @@ func TestMain(m *testing.M) { err = setup() if err != nil { - log.Fatalf("could not set up environment: %v\n", err) + log.Fatalf("could not set up environment: %+v", err) } code = m.Run() @@ -110,8 +110,8 @@ func TestMain(m *testing.M) { os.Exit(code) } -// Example creates a SQL server and database, then creates a table and inserts a record. -func ExampleCreateDatabase() { +// Example_createDatabase creates a SQL server and database, then creates a table and inserts a record. +func Example_createDatabase() { var groupName = config.GenerateGroupName("DatabaseQueries") config.SetGroupName(groupName) @@ -122,30 +122,30 @@ func ExampleCreateDatabase() { _, err := resources.CreateGroup(ctx, config.GroupName()) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = CreateServer(ctx, serverName, dbLogin, dbPassword) if err != nil { - util.PrintAndLog(fmt.Sprintf("cannot create sql server: %v", err)) + util.LogAndPanic(fmt.Errorf("cannot create sql server: %+v", err)) } util.PrintAndLog("sql server created") _, err = CreateDB(ctx, serverName, dbName) if err != nil { - util.PrintAndLog(fmt.Sprintf("cannot create sql database: %v", err)) + util.LogAndPanic(fmt.Errorf("cannot create sql database: %+v", err)) } util.PrintAndLog("database created") err = CreateFirewallRules(ctx, serverName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("database firewall rules set") err = testSQLDataplane(serverName, dbName, dbLogin, dbPassword) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("database operations performed") diff --git a/storage/account.go b/storage/account.go index bca4a8d3c..7a91bd1c6 100644 --- a/storage/account.go +++ b/storage/account.go @@ -10,12 +10,11 @@ import ( "fmt" "log" + "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" + "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" "github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-06-01/storage" "github.com/Azure/go-autorest/autorest" "github.com/Azure/go-autorest/autorest/to" - - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" ) var ( @@ -61,12 +60,12 @@ func CreateStorageAccount(ctx context.Context, accountName, accountGroupName str Type: to.StringPtr("Microsoft.Storage/storageAccounts"), }) if err != nil { - return s, fmt.Errorf("storage account check-name-availability failed: %v\n", err) + return s, fmt.Errorf("storage account check-name-availability failed: %+v", err) } - if *result.NameAvailable != true { + if !*result.NameAvailable { return s, fmt.Errorf( - "storage account name [%s] not available: %v\nserver message: %v\n", + "storage account name [%s] not available: %v\nserver message: %v", accountName, err, *result.Message) } @@ -83,12 +82,12 @@ func CreateStorageAccount(ctx context.Context, accountName, accountGroupName str }) if err != nil { - return s, fmt.Errorf("failed to start creating storage account: %v\n", err) + return s, fmt.Errorf("failed to start creating storage account: %+v", err) } err = future.WaitForCompletionRef(ctx, storageAccountsClient.Client) if err != nil { - return s, fmt.Errorf("failed to finish creating storage account: %v\n", err) + return s, fmt.Errorf("failed to finish creating storage account: %+v", err) } return future.Result(storageAccountsClient) diff --git a/storage/account_test.go b/storage/account_test.go index 8d1f20027..0655fe2f2 100644 --- a/storage/account_test.go +++ b/storage/account_test.go @@ -14,7 +14,7 @@ import ( "github.com/Azure-Samples/azure-sdk-for-go-samples/resources" ) -func ExampleStorageAccountOperations() { +func Example_storageAccountOperations() { var groupName = testAccountGroupName var accountName = testAccountName @@ -25,19 +25,19 @@ func ExampleStorageAccountOperations() { _, err := resources.CreateGroup(ctx, groupName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = resources.RegisterProvider(ctx, "Microsoft.Storage") if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("registered resource provider") result, err := CheckAccountNameAvailability(ctx, accountName) log.Printf("[%T]: %+v\n", result, result) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("checked for account availability") @@ -58,43 +58,43 @@ func ExampleStorageAccountOperations() { _, err = GetStorageAccount(ctx, accountName, groupName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("got storage account details") _, err = UpdateAccount(ctx, accountName, groupName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("updated storage account") _, err = ListAccountsByResourceGroup(ctx, groupName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("listed storage accounts in resource group") _, err = ListAccountsBySubscription(ctx) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("listed storage accounts in subscription") _, err = GetAccountKeys(ctx, accountName, groupName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("get storage account keys") _, err = RegenerateAccountKey(ctx, accountName, groupName, 0) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("regenerated first storage account key") _, err = ListUsage(ctx) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("listed usage") diff --git a/storage/appendblob_test.go b/storage/appendblob_test.go index 776622d12..5e3599d7d 100644 --- a/storage/appendblob_test.go +++ b/storage/appendblob_test.go @@ -12,7 +12,7 @@ import ( "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/util" ) -func ExampleAppendBlobOperations() { +func Example_appendBlobOperations() { var accountName = testAccountName var accountGroupName = testAccountGroupName var containerName = generateName("test-appendblobc") @@ -24,13 +24,13 @@ func ExampleAppendBlobOperations() { _, err = CreateContainer(ctx, accountName, accountGroupName, containerName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created container") _, err = CreateAppendBlob(ctx, accountName, accountGroupName, containerName, blobName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created append blob") @@ -38,14 +38,14 @@ func ExampleAppendBlobOperations() { for _, block := range blocks { err = AppendToBlob(ctx, accountName, accountGroupName, containerName, blobName, block) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("appended data to blob") } blob, err := GetBlob(ctx, accountName, accountGroupName, containerName, blobName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("got blob") util.PrintAndLog(blob) diff --git a/storage/blockblob_test.go b/storage/blockblob_test.go index 4a33adeb0..be738d19c 100644 --- a/storage/blockblob_test.go +++ b/storage/blockblob_test.go @@ -13,7 +13,7 @@ import ( "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/util" ) -func ExampleBlockBlobOperations() { +func Example_blockBlobOperations() { var accountName = testAccountName var accountGroupName = testAccountGroupName var containerName = generateName("test-blockblobc") @@ -25,13 +25,13 @@ func ExampleBlockBlobOperations() { _, err = CreateContainer(ctx, accountName, accountGroupName, containerName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created container") _, err = CreateBlockBlob(ctx, accountName, accountGroupName, containerName, blobName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created blob") @@ -39,14 +39,14 @@ func ExampleBlockBlobOperations() { for i, block := range blocks { err = PutBlockOnBlob(ctx, accountName, accountGroupName, containerName, blobName, block, i) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog(fmt.Sprintf("put block %d", i)) } list, err := GetUncommitedBlocks(ctx, accountName, accountGroupName, containerName, blobName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog(fmt.Sprintf( "list of uncommitted blocks has %d elements", @@ -54,13 +54,13 @@ func ExampleBlockBlobOperations() { err = CommitBlocks(ctx, accountName, accountGroupName, containerName, blobName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("committed blocks") blob, err := GetBlob(ctx, accountName, accountGroupName, containerName, blobName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("downloaded blob") util.PrintAndLog(blob) diff --git a/storage/container_test.go b/storage/container_test.go index 0a000ba1b..823e26a05 100644 --- a/storage/container_test.go +++ b/storage/container_test.go @@ -13,7 +13,7 @@ import ( "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/util" ) -func ExampleContainerAndBlobs() { +func Example_containerAndBlobs() { var accountName = testAccountName var accountGroupName = testAccountGroupName var containerName = generateName("test-blobc") @@ -24,7 +24,7 @@ func ExampleContainerAndBlobs() { _, err = CreateContainer(ctx, accountName, accountGroupName, containerName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created container") @@ -32,16 +32,16 @@ func ExampleContainerAndBlobs() { blobName := fmt.Sprintf("test-blob%d", i) _, err = CreateBlockBlob(ctx, accountName, accountGroupName, containerName, blobName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog(fmt.Sprintf("created test-blob%d", i)) } list, err := ListBlobs(ctx, accountName, accountGroupName, containerName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } - util.PrintAndLog(fmt.Sprintf("listed %d blobs", len(list.Blobs.Blob))) + util.PrintAndLog(fmt.Sprintf("listed %d blobs", len(list.Segment.BlobItems))) // Output: // created container diff --git a/storage/hybrid/account.go b/storage/hybrid/account.go index cdf6fa588..21f0467c2 100644 --- a/storage/hybrid/account.go +++ b/storage/hybrid/account.go @@ -40,7 +40,7 @@ func CreateStorageAccount(ctx context.Context, accountName string) (s storage.Ac if err != nil { return s, fmt.Errorf(errorPrefix, err) } - if *result.NameAvailable != true { + if !*result.NameAvailable { return s, fmt.Errorf(errorPrefix, fmt.Sprintf("storage account name [%v] not available", accountName)) } future, err := storageAccountsClient.Create( diff --git a/storage/hybrid/storage_test.go b/storage/hybrid/storage_test.go index c4c689ef6..f06c7f0e0 100644 --- a/storage/hybrid/storage_test.go +++ b/storage/hybrid/storage_test.go @@ -20,16 +20,13 @@ var ( ) func TestMain(m *testing.M) { - err := config.ParseEnvironment() - if err != nil { - log.Fatalln("failed to parse env") + if err := config.ParseEnvironment(); err != nil { + log.Fatalf("failed to parse env: %+v", err) } - - config.AddFlags() - flag.Parse() - if err != nil { - log.Fatalln("failed to parse flags") + if err := config.AddFlags(); err != nil { + log.Fatalf("failed to add flags: %+v", err) } + flag.Parse() os.Exit(m.Run()) } @@ -40,11 +37,11 @@ func ExampleCreateStorageAccount() { _, err := hybridresources.CreateGroup(ctx) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } _, err = CreateStorageAccount(context.Background(), accountName) if err != nil { - log.Fatal(fmt.Sprintf("Cannot create storage account. Error details: %s", err.Error())) + util.LogAndPanic(fmt.Errorf("cannot create storage account. Error details: %+v", err)) } fmt.Println("Storage account created") diff --git a/storage/pageblob.go b/storage/pageblob.go index db46b5c0c..5a8a99215 100644 --- a/storage/pageblob.go +++ b/storage/pageblob.go @@ -41,9 +41,7 @@ func PutPage(ctx context.Context, accountName, accountGroupName, containerName, b := getPageBlobURL(ctx, accountName, accountGroupName, containerName, blobName) newPage := make([]byte, azblob.PageBlobPageBytes) - for i, c := range []byte(page) { - newPage[i] = c - } + copy(newPage, page) _, err := b.UploadPages(ctx, int64(pages*azblob.PageBlobPageBytes), bytes.NewReader(newPage), diff --git a/storage/pageblob_test.go b/storage/pageblob_test.go index c2a503f13..2df9b5c71 100644 --- a/storage/pageblob_test.go +++ b/storage/pageblob_test.go @@ -13,7 +13,7 @@ import ( "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/util" ) -func ExamplePageBlobOperations() { +func Example_pageBlobOperations() { var accountName = testAccountName var accountGroupName = testAccountGroupName var containerName = generateName("test-pageblobc") @@ -25,28 +25,28 @@ func ExamplePageBlobOperations() { _, err = CreateContainer(ctx, accountName, accountGroupName, containerName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created container") pages := []string{"Hello", "World!", "Hello", "Galaxy!"} _, err = CreatePageBlob(ctx, accountName, accountGroupName, containerName, blobName, len(pages)) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("created page blob") for i, page := range pages { err = PutPage(ctx, accountName, accountGroupName, containerName, blobName, page, i) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog(fmt.Sprintf("put page %d", i)) } _, err = GetBlob(ctx, accountName, accountGroupName, containerName, blobName) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("downloaded blob") // empty bytes are in fact mixed in between the strings @@ -58,13 +58,13 @@ func ExamplePageBlobOperations() { var pageToClear int = 2 err = ClearPage(ctx, accountName, accountGroupName, containerName, blobName, pageToClear) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog(fmt.Sprintf("cleared page %d", pageToClear)) _, err = GetPageRanges(ctx, accountName, accountGroupName, containerName, blobName, len(pages)) if err != nil { - util.PrintAndLog(err.Error()) + util.LogAndPanic(err) } util.PrintAndLog("got page ranges") diff --git a/storage/storage_test.go b/storage/storage_test.go index ceb5dba29..0def0cbdb 100644 --- a/storage/storage_test.go +++ b/storage/storage_test.go @@ -24,7 +24,7 @@ func addLocalEnvAndParse() error { // parse env at top-level (also controls dotenv load) err := config.ParseEnvironment() if err != nil { - return fmt.Errorf("failed to add top-level env: %v\n", err.Error()) + return fmt.Errorf("failed to add top-level env: %+v", err) } // add local env @@ -43,7 +43,7 @@ func addLocalFlagsAndParse() error { // add top-level flags err := config.AddFlags() if err != nil { - return fmt.Errorf("failed to add top-level flags: %v\n", err.Error()) + return fmt.Errorf("failed to add top-level flags: %+v", err) } // add local flags @@ -103,7 +103,7 @@ func TestMain(m *testing.M) { err = setup() if err != nil { - log.Fatalf("could not set up environment: %v\n", err) + log.Fatalf("could not set up environment: %+v", err) } code = m.Run() diff --git a/web/web.go b/web/web.go index ba9f5457d..49e2a3a9b 100644 --- a/web/web.go +++ b/web/web.go @@ -4,10 +4,9 @@ import ( "context" "fmt" - "github.com/Azure/azure-sdk-for-go/services/web/mgmt/2016-09-01/web" - "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/config" "github.com/Azure-Samples/azure-sdk-for-go-samples/internal/iam" + "github.com/Azure/azure-sdk-for-go/services/web/mgmt/2016-09-01/web" "github.com/Azure/go-autorest/autorest/to" ) diff --git a/web/web_test.go b/web/web_test.go index b35c497b0..629ee94bd 100644 --- a/web/web_test.go +++ b/web/web_test.go @@ -21,20 +21,16 @@ import ( ) var ( - appServicePlanName = randname.GenerateWithPrefix("web-appserviceplan-go-samples", 10) - siteName = randname.GenerateWithPrefix("web-site-go-samples", 10) + siteName = randname.GenerateWithPrefix("web-site-go-samples", 10) ) // TestMain sets up the environment and initiates tests. func TestMain(m *testing.M) { - var err error - err = config.ParseEnvironment() - if err != nil { + if err := config.ParseEnvironment(); err != nil { log.Fatalf("failed to parse env: %v\n", err) } - err = config.AddFlags() - if err != nil { - log.Fatalf("failed to parse env: %v\n", err) + if err := config.AddFlags(); err != nil { + log.Fatalf("failed to add flags: %+v", err) } flag.Parse() @@ -42,7 +38,7 @@ func TestMain(m *testing.M) { os.Exit(code) } -func ExampleWeb_DeployAppForContainer() { +func Example_deployAppForContainer() { var groupName = config.GenerateGroupName("WebAppForContainers") config.SetGroupName(groupName) ctx, cancel := context.WithTimeout(context.Background(), time.Minute*10)