mirror of
				https://github.com/optim-enterprises-bv/vault.git
				synced 2025-11-01 02:57:59 +00:00 
			
		
		
		
	Migrate internalshared out (#9727)
* Migrate internalshared out * fix merge issue * fix merge issue * go mod vendor Co-authored-by: Brian Kassouf <bkassouf@hashicorp.com>
This commit is contained in:
		| @@ -17,6 +17,7 @@ import ( | |||||||
|  |  | ||||||
| 	"github.com/hashicorp/errwrap" | 	"github.com/hashicorp/errwrap" | ||||||
| 	log "github.com/hashicorp/go-hclog" | 	log "github.com/hashicorp/go-hclog" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/gatedwriter" | ||||||
| 	"github.com/hashicorp/vault/api" | 	"github.com/hashicorp/vault/api" | ||||||
| 	"github.com/hashicorp/vault/command/agent/auth" | 	"github.com/hashicorp/vault/command/agent/auth" | ||||||
| 	"github.com/hashicorp/vault/command/agent/auth/alicloud" | 	"github.com/hashicorp/vault/command/agent/auth/alicloud" | ||||||
| @@ -35,7 +36,6 @@ import ( | |||||||
| 	"github.com/hashicorp/vault/command/agent/sink/file" | 	"github.com/hashicorp/vault/command/agent/sink/file" | ||||||
| 	"github.com/hashicorp/vault/command/agent/sink/inmem" | 	"github.com/hashicorp/vault/command/agent/sink/inmem" | ||||||
| 	"github.com/hashicorp/vault/command/agent/template" | 	"github.com/hashicorp/vault/command/agent/template" | ||||||
| 	"github.com/hashicorp/vault/internalshared/gatedwriter" |  | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/consts" | 	"github.com/hashicorp/vault/sdk/helper/consts" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/logging" | 	"github.com/hashicorp/vault/sdk/helper/logging" | ||||||
| 	"github.com/hashicorp/vault/sdk/logical" | 	"github.com/hashicorp/vault/sdk/logical" | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								command/agent/cache/listener.go
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								command/agent/cache/listener.go
									
									
									
									
										vendored
									
									
								
							| @@ -7,9 +7,9 @@ import ( | |||||||
|  |  | ||||||
| 	"strings" | 	"strings" | ||||||
|  |  | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/configutil" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/listenerutil" | ||||||
| 	"github.com/hashicorp/vault/command/server" | 	"github.com/hashicorp/vault/command/server" | ||||||
| 	"github.com/hashicorp/vault/internalshared/configutil" |  | ||||||
| 	"github.com/hashicorp/vault/internalshared/listenerutil" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func StartListener(lnConfig *configutil.Listener) (net.Listener, *tls.Config, error) { | func StartListener(lnConfig *configutil.Listener) (net.Listener, *tls.Config, error) { | ||||||
|   | |||||||
| @@ -13,8 +13,8 @@ import ( | |||||||
| 	"github.com/hashicorp/go-multierror" | 	"github.com/hashicorp/go-multierror" | ||||||
| 	"github.com/hashicorp/hcl" | 	"github.com/hashicorp/hcl" | ||||||
| 	"github.com/hashicorp/hcl/hcl/ast" | 	"github.com/hashicorp/hcl/hcl/ast" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/configutil" | ||||||
| 	"github.com/hashicorp/vault/helper/namespace" | 	"github.com/hashicorp/vault/helper/namespace" | ||||||
| 	"github.com/hashicorp/vault/internalshared/configutil" |  | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/parseutil" | 	"github.com/hashicorp/vault/sdk/helper/parseutil" | ||||||
| 	"github.com/mitchellh/mapstructure" | 	"github.com/mitchellh/mapstructure" | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ import ( | |||||||
|  |  | ||||||
| 	"github.com/go-test/deep" | 	"github.com/go-test/deep" | ||||||
| 	ctconfig "github.com/hashicorp/consul-template/config" | 	ctconfig "github.com/hashicorp/consul-template/config" | ||||||
| 	"github.com/hashicorp/vault/internalshared/configutil" | 	"github.com/hashicorp/shared-secure-libs/configutil" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/pointerutil" | 	"github.com/hashicorp/vault/sdk/helper/pointerutil" | ||||||
| ) | ) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -9,8 +9,8 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/hashicorp/errwrap" | 	"github.com/hashicorp/errwrap" | ||||||
|  | 	kvbuilder "github.com/hashicorp/shared-secure-libs/kv-builder" | ||||||
| 	"github.com/hashicorp/vault/api" | 	"github.com/hashicorp/vault/api" | ||||||
| 	kvbuilder "github.com/hashicorp/vault/internalshared/kv-builder" |  | ||||||
| 	"github.com/kr/text" | 	"github.com/kr/text" | ||||||
| 	homedir "github.com/mitchellh/go-homedir" | 	homedir "github.com/mitchellh/go-homedir" | ||||||
| 	"github.com/mitchellh/mapstructure" | 	"github.com/mitchellh/mapstructure" | ||||||
|   | |||||||
| @@ -13,8 +13,8 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/hashicorp/go-hclog" | 	"github.com/hashicorp/go-hclog" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/gatedwriter" | ||||||
| 	"github.com/hashicorp/vault/api" | 	"github.com/hashicorp/vault/api" | ||||||
| 	"github.com/hashicorp/vault/internalshared/gatedwriter" |  | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/logging" | 	"github.com/hashicorp/vault/sdk/helper/logging" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/strutil" | 	"github.com/hashicorp/vault/sdk/helper/strutil" | ||||||
| 	"github.com/hashicorp/vault/sdk/version" | 	"github.com/hashicorp/vault/sdk/version" | ||||||
|   | |||||||
| @@ -26,16 +26,16 @@ import ( | |||||||
| 	wrapping "github.com/hashicorp/go-kms-wrapping" | 	wrapping "github.com/hashicorp/go-kms-wrapping" | ||||||
| 	aeadwrapper "github.com/hashicorp/go-kms-wrapping/wrappers/aead" | 	aeadwrapper "github.com/hashicorp/go-kms-wrapping/wrappers/aead" | ||||||
| 	"github.com/hashicorp/go-multierror" | 	"github.com/hashicorp/go-multierror" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/configutil" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/gatedwriter" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/listenerutil" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/metricsutil" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/reloadutil" | ||||||
| 	"github.com/hashicorp/vault/audit" | 	"github.com/hashicorp/vault/audit" | ||||||
| 	"github.com/hashicorp/vault/command/server" | 	"github.com/hashicorp/vault/command/server" | ||||||
| 	"github.com/hashicorp/vault/helper/builtinplugins" | 	"github.com/hashicorp/vault/helper/builtinplugins" | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" |  | ||||||
| 	"github.com/hashicorp/vault/helper/namespace" | 	"github.com/hashicorp/vault/helper/namespace" | ||||||
| 	vaulthttp "github.com/hashicorp/vault/http" | 	vaulthttp "github.com/hashicorp/vault/http" | ||||||
| 	"github.com/hashicorp/vault/internalshared/configutil" |  | ||||||
| 	"github.com/hashicorp/vault/internalshared/gatedwriter" |  | ||||||
| 	"github.com/hashicorp/vault/internalshared/listenerutil" |  | ||||||
| 	"github.com/hashicorp/vault/internalshared/reloadutil" |  | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/jsonutil" | 	"github.com/hashicorp/vault/sdk/helper/jsonutil" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/logging" | 	"github.com/hashicorp/vault/sdk/helper/logging" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/mlock" | 	"github.com/hashicorp/vault/sdk/helper/mlock" | ||||||
|   | |||||||
| @@ -16,7 +16,7 @@ import ( | |||||||
| 	"github.com/hashicorp/go-multierror" | 	"github.com/hashicorp/go-multierror" | ||||||
| 	"github.com/hashicorp/hcl" | 	"github.com/hashicorp/hcl" | ||||||
| 	"github.com/hashicorp/hcl/hcl/ast" | 	"github.com/hashicorp/hcl/hcl/ast" | ||||||
| 	"github.com/hashicorp/vault/internalshared/configutil" | 	"github.com/hashicorp/shared-secure-libs/configutil" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/parseutil" | 	"github.com/hashicorp/vault/sdk/helper/parseutil" | ||||||
| ) | ) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ import ( | |||||||
| 	"github.com/go-test/deep" | 	"github.com/go-test/deep" | ||||||
| 	"github.com/hashicorp/hcl" | 	"github.com/hashicorp/hcl" | ||||||
| 	"github.com/hashicorp/hcl/hcl/ast" | 	"github.com/hashicorp/hcl/hcl/ast" | ||||||
| 	"github.com/hashicorp/vault/internalshared/configutil" | 	"github.com/hashicorp/shared-secure-libs/configutil" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func testConfigRaftRetryJoin(t *testing.T) { | func testConfigRaftRetryJoin(t *testing.T) { | ||||||
|   | |||||||
| @@ -9,9 +9,9 @@ import ( | |||||||
| 	"io" | 	"io" | ||||||
| 	"net" | 	"net" | ||||||
|  |  | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/configutil" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/reloadutil" | ||||||
| 	"github.com/hashicorp/vault/helper/proxyutil" | 	"github.com/hashicorp/vault/helper/proxyutil" | ||||||
| 	"github.com/hashicorp/vault/internalshared/configutil" |  | ||||||
| 	"github.com/hashicorp/vault/internalshared/reloadutil" |  | ||||||
| 	"github.com/mitchellh/cli" | 	"github.com/mitchellh/cli" | ||||||
| ) | ) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -9,9 +9,9 @@ import ( | |||||||
| 	"strings" | 	"strings" | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/hashicorp/vault/internalshared/configutil" | 	"github.com/hashicorp/shared-secure-libs/configutil" | ||||||
| 	"github.com/hashicorp/vault/internalshared/listenerutil" | 	"github.com/hashicorp/shared-secure-libs/listenerutil" | ||||||
| 	"github.com/hashicorp/vault/internalshared/reloadutil" | 	"github.com/hashicorp/shared-secure-libs/reloadutil" | ||||||
| 	"github.com/mitchellh/cli" | 	"github.com/mitchellh/cli" | ||||||
| ) | ) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -11,7 +11,7 @@ import ( | |||||||
| 	"testing" | 	"testing" | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/hashicorp/vault/internalshared/configutil" | 	"github.com/hashicorp/shared-secure-libs/configutil" | ||||||
| 	"github.com/mitchellh/cli" | 	"github.com/mitchellh/cli" | ||||||
| ) | ) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -10,9 +10,9 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/hashicorp/go-uuid" | 	"github.com/hashicorp/go-uuid" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/configutil" | ||||||
| 	"github.com/hashicorp/vault/api" | 	"github.com/hashicorp/vault/api" | ||||||
| 	"github.com/hashicorp/vault/helper/testhelpers/docker" | 	"github.com/hashicorp/vault/helper/testhelpers/docker" | ||||||
| 	"github.com/hashicorp/vault/internalshared/configutil" |  | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestTransitWrapper_Lifecycle(t *testing.T) { | func TestTransitWrapper_Lifecycle(t *testing.T) { | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								go.mod
									
									
									
									
									
								
							| @@ -7,7 +7,6 @@ replace github.com/hashicorp/vault/api => ./api | |||||||
| replace github.com/hashicorp/vault/sdk => ./sdk | replace github.com/hashicorp/vault/sdk => ./sdk | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	cloud.google.com/go v0.56.0 |  | ||||||
| 	cloud.google.com/go/spanner v1.5.1 | 	cloud.google.com/go/spanner v1.5.1 | ||||||
| 	cloud.google.com/go/storage v1.6.0 | 	cloud.google.com/go/storage v1.6.0 | ||||||
| 	github.com/Azure/azure-storage-blob-go v0.10.0 | 	github.com/Azure/azure-storage-blob-go v0.10.0 | ||||||
| @@ -49,7 +48,7 @@ require ( | |||||||
| 	github.com/gocql/gocql v0.0.0-20200624222514-34081eda590e | 	github.com/gocql/gocql v0.0.0-20200624222514-34081eda590e | ||||||
| 	github.com/golang/protobuf v1.4.2 | 	github.com/golang/protobuf v1.4.2 | ||||||
| 	github.com/google/go-github v17.0.0+incompatible | 	github.com/google/go-github v17.0.0+incompatible | ||||||
| 	github.com/google/go-metrics-stackdriver v0.2.0 | 	github.com/google/go-metrics-stackdriver v0.2.0 // indirect | ||||||
| 	github.com/hashicorp/consul-template v0.25.1 | 	github.com/hashicorp/consul-template v0.25.1 | ||||||
| 	github.com/hashicorp/consul/api v1.4.0 | 	github.com/hashicorp/consul/api v1.4.0 | ||||||
| 	github.com/hashicorp/errwrap v1.0.0 | 	github.com/hashicorp/errwrap v1.0.0 | ||||||
| @@ -72,6 +71,7 @@ require ( | |||||||
| 	github.com/hashicorp/nomad/api v0.0.0-20191220223628-edc62acd919d | 	github.com/hashicorp/nomad/api v0.0.0-20191220223628-edc62acd919d | ||||||
| 	github.com/hashicorp/raft v1.1.3-0.20201002073007-f367681f9c48 | 	github.com/hashicorp/raft v1.1.3-0.20201002073007-f367681f9c48 | ||||||
| 	github.com/hashicorp/raft-snapshot v1.0.2-0.20190827162939-8117efcc5aab | 	github.com/hashicorp/raft-snapshot v1.0.2-0.20190827162939-8117efcc5aab | ||||||
|  | 	github.com/hashicorp/shared-secure-libs v0.0.2 | ||||||
| 	github.com/hashicorp/vault-plugin-auth-alicloud v0.5.5 | 	github.com/hashicorp/vault-plugin-auth-alicloud v0.5.5 | ||||||
| 	github.com/hashicorp/vault-plugin-auth-azure v0.5.6 | 	github.com/hashicorp/vault-plugin-auth-azure v0.5.6 | ||||||
| 	github.com/hashicorp/vault-plugin-auth-centrify v0.5.5 | 	github.com/hashicorp/vault-plugin-auth-centrify v0.5.5 | ||||||
| @@ -97,7 +97,6 @@ require ( | |||||||
| 	github.com/hashicorp/vault/sdk v0.1.14-0.20201007132131-6a41edbf89f5 | 	github.com/hashicorp/vault/sdk v0.1.14-0.20201007132131-6a41edbf89f5 | ||||||
| 	github.com/influxdata/influxdb v0.0.0-20190411212539-d24b7ba8c4c4 | 	github.com/influxdata/influxdb v0.0.0-20190411212539-d24b7ba8c4c4 | ||||||
| 	github.com/jcmturner/gokrb5/v8 v8.0.0 | 	github.com/jcmturner/gokrb5/v8 v8.0.0 | ||||||
| 	github.com/jefferai/isbadcipher v0.0.0-20190226160619-51d2077c035f |  | ||||||
| 	github.com/jefferai/jsonx v1.0.0 | 	github.com/jefferai/jsonx v1.0.0 | ||||||
| 	github.com/joyent/triton-go v1.7.1-0.20200416154420-6801d15b779f | 	github.com/joyent/triton-go v1.7.1-0.20200416154420-6801d15b779f | ||||||
| 	github.com/keybase/go-crypto v0.0.0-20190403132359-d65b6b94177f | 	github.com/keybase/go-crypto v0.0.0-20190403132359-d65b6b94177f | ||||||
| @@ -107,7 +106,7 @@ require ( | |||||||
| 	github.com/mattn/go-colorable v0.1.6 | 	github.com/mattn/go-colorable v0.1.6 | ||||||
| 	github.com/mholt/archiver v3.1.1+incompatible | 	github.com/mholt/archiver v3.1.1+incompatible | ||||||
| 	github.com/michaelklishin/rabbit-hole v0.0.0-20191008194146-93d9988f0cd5 | 	github.com/michaelklishin/rabbit-hole v0.0.0-20191008194146-93d9988f0cd5 | ||||||
| 	github.com/mitchellh/cli v1.0.0 | 	github.com/mitchellh/cli v1.1.1 | ||||||
| 	github.com/mitchellh/copystructure v1.0.0 | 	github.com/mitchellh/copystructure v1.0.0 | ||||||
| 	github.com/mitchellh/go-homedir v1.1.0 | 	github.com/mitchellh/go-homedir v1.1.0 | ||||||
| 	github.com/mitchellh/go-testing-interface v1.0.0 | 	github.com/mitchellh/go-testing-interface v1.0.0 | ||||||
| @@ -128,12 +127,10 @@ require ( | |||||||
| 	github.com/pkg/errors v0.9.1 | 	github.com/pkg/errors v0.9.1 | ||||||
| 	github.com/posener/complete v1.2.1 | 	github.com/posener/complete v1.2.1 | ||||||
| 	github.com/pquerna/otp v1.2.1-0.20191009055518-468c2dd2b58d | 	github.com/pquerna/otp v1.2.1-0.20191009055518-468c2dd2b58d | ||||||
| 	github.com/prometheus/client_golang v1.4.0 |  | ||||||
| 	github.com/prometheus/common v0.9.1 |  | ||||||
| 	github.com/rboyer/safeio v0.2.1 | 	github.com/rboyer/safeio v0.2.1 | ||||||
| 	github.com/ryanuber/columnize v2.1.0+incompatible | 	github.com/ryanuber/columnize v2.1.0+incompatible | ||||||
| 	github.com/ryanuber/go-glob v1.0.0 | 	github.com/ryanuber/go-glob v1.0.0 | ||||||
| 	github.com/samuel/go-zookeeper v0.0.0-20180130194729-c4fab1ac1bec | 	github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da | ||||||
| 	github.com/sasha-s/go-deadlock v0.2.0 | 	github.com/sasha-s/go-deadlock v0.2.0 | ||||||
| 	github.com/sethvargo/go-limiter v0.3.0 | 	github.com/sethvargo/go-limiter v0.3.0 | ||||||
| 	github.com/shirou/gopsutil v2.20.6-0.20200630091542-01afd763e6c0+incompatible | 	github.com/shirou/gopsutil v2.20.6-0.20200630091542-01afd763e6c0+incompatible | ||||||
| @@ -147,10 +144,9 @@ require ( | |||||||
| 	go.etcd.io/etcd v0.5.0-alpha.5.0.20200425165423-262c93980547 | 	go.etcd.io/etcd v0.5.0-alpha.5.0.20200425165423-262c93980547 | ||||||
| 	go.mongodb.org/mongo-driver v1.2.1 | 	go.mongodb.org/mongo-driver v1.2.1 | ||||||
| 	go.uber.org/atomic v1.6.0 | 	go.uber.org/atomic v1.6.0 | ||||||
| 	golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9 | 	golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 | ||||||
| 	golang.org/x/net v0.0.0-20200602114024-627f9648deb9 | 	golang.org/x/net v0.0.0-20200625001655-4c5254603344 | ||||||
| 	golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d | 	golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d | ||||||
| 	golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae // indirect |  | ||||||
| 	golang.org/x/tools v0.0.0-20200521155704-91d71f6c2f04 | 	golang.org/x/tools v0.0.0-20200521155704-91d71f6c2f04 | ||||||
| 	google.golang.org/api v0.29.0 | 	google.golang.org/api v0.29.0 | ||||||
| 	google.golang.org/grpc v1.29.1 | 	google.golang.org/grpc v1.29.1 | ||||||
|   | |||||||
							
								
								
									
										194
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										194
									
								
								go.sum
									
									
									
									
									
								
							| @@ -17,15 +17,12 @@ cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbf | |||||||
| cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= | cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= | ||||||
| cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= | cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= | ||||||
| cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= | cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= | ||||||
| cloud.google.com/go/bigquery v1.6.0 h1:ajp/DjpiCHO71SyIhwb83YsUGAyWuzVvMko+9xCsJLw= |  | ||||||
| cloud.google.com/go/bigquery v1.6.0/go.mod h1:hyFDG0qSGdHNz8Q6nDN8rYIkld0q/+5uBZaelxiDLfE= | cloud.google.com/go/bigquery v1.6.0/go.mod h1:hyFDG0qSGdHNz8Q6nDN8rYIkld0q/+5uBZaelxiDLfE= | ||||||
| cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= | cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= | ||||||
| cloud.google.com/go/datastore v1.1.0 h1:/May9ojXjRkPBNVrq+oWLqmWCkr4OU5uRY29bu0mRyQ= |  | ||||||
| cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= | cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= | ||||||
| cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= | cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= | ||||||
| cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= | cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= | ||||||
| cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= | cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= | ||||||
| cloud.google.com/go/pubsub v1.3.1 h1:ukjixP1wl0LpnZ6LWtZJ0mX5tBmjp1f8Sqer8Z2OMUU= |  | ||||||
| cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= | cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= | ||||||
| cloud.google.com/go/spanner v1.5.1 h1:dWyj10TLlaxH2No6+tXsSCaq9oWgrRbXy1N3x/bhMGU= | cloud.google.com/go/spanner v1.5.1 h1:dWyj10TLlaxH2No6+tXsSCaq9oWgrRbXy1N3x/bhMGU= | ||||||
| cloud.google.com/go/spanner v1.5.1/go.mod h1:e1+8M6PF3ntV9Xr57X2Gf+UhylXXYF6gI4WRZ1kfu2A= | cloud.google.com/go/spanner v1.5.1/go.mod h1:e1+8M6PF3ntV9Xr57X2Gf+UhylXXYF6gI4WRZ1kfu2A= | ||||||
| @@ -69,7 +66,6 @@ github.com/Azure/go-autorest/autorest/date v0.2.0 h1:yW+Zlqf26583pE43KhfnhFcdmSW | |||||||
| github.com/Azure/go-autorest/autorest/date v0.2.0/go.mod h1:vcORJHLJEh643/Ioh9+vPmf1Ij9AEBM5FuBIXLmIy0g= | 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.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.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/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 h1:zebkZaadz7+wIQYgC7GXaz3Wb28yKYfVkkBKwc38VF8= | ||||||
| github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= | github.com/Azure/go-autorest/autorest/to v0.3.0/go.mod h1:MgwOyqaIuKdG4TL/2ywSsIWKAfJfgHDo8ObuUk3t5sA= | ||||||
| @@ -89,10 +85,10 @@ github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= | |||||||
| github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= | github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= | ||||||
| github.com/Jeffail/gabs v1.1.1 h1:V0uzR08Hj22EX8+8QMhyI9sX2hwRu+/RJhJUmnwda/E= | github.com/Jeffail/gabs v1.1.1 h1:V0uzR08Hj22EX8+8QMhyI9sX2hwRu+/RJhJUmnwda/E= | ||||||
| github.com/Jeffail/gabs v1.1.1/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc= | github.com/Jeffail/gabs v1.1.1/go.mod h1:6xMvQMK4k33lb7GUUpaAPh6nKMmemQeg5d4gn7/bOXc= | ||||||
|  | github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= | ||||||
| github.com/Masterminds/semver v1.4.2 h1:WBLTQ37jOCzSLtXNdoo8bNM8876KhNqOKvrlGITgsTc= | github.com/Masterminds/semver v1.4.2 h1:WBLTQ37jOCzSLtXNdoo8bNM8876KhNqOKvrlGITgsTc= | ||||||
| github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= | github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= | ||||||
| github.com/Microsoft/go-winio v0.4.13/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= | github.com/Microsoft/go-winio v0.4.13/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= | ||||||
| github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= |  | ||||||
| github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5 h1:ygIc8M6trr62pF5DucadTWGdEB4mEyvzi0e2nbcmcyA= | github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5 h1:ygIc8M6trr62pF5DucadTWGdEB4mEyvzi0e2nbcmcyA= | ||||||
| github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= | github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= | ||||||
| github.com/Microsoft/hcsshim v0.8.9 h1:VrfodqvztU8YSOvygU+DN1BGaSGxmrNfqOv5oOuX2Bk= | github.com/Microsoft/hcsshim v0.8.9 h1:VrfodqvztU8YSOvygU+DN1BGaSGxmrNfqOv5oOuX2Bk= | ||||||
| @@ -110,18 +106,21 @@ github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWX | |||||||
| github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= | github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= | ||||||
| github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk= | github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUWq3EgK3CesDbo8upS2Vm9/P3FtgI+Jk= | ||||||
| github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= | github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= | ||||||
| github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af h1:DBNMBMuMiWYu0b+8KMJuWmfCkcxl09JwdlqwDZZ6U14= | github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= | ||||||
| github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= | github.com/abdullin/seq v0.0.0-20160510034733-d5467c17e7af/go.mod h1:5Jv4cbFiHJMsVxt52+i0Ha45fjshj6wxYr1r19tB9bw= | ||||||
|  | github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= | ||||||
| github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= | github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= | ||||||
| github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= | github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= | ||||||
| github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= | github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= | ||||||
| github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= | github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= | ||||||
|  | github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= | ||||||
| github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190412020505-60e2075261b6/go.mod h1:T9M45xf79ahXVelWoOBmH0y4aC1t5kXO5BxwyakgIGA= | github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190412020505-60e2075261b6/go.mod h1:T9M45xf79ahXVelWoOBmH0y4aC1t5kXO5BxwyakgIGA= | ||||||
| github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190620160927-9418d7b0cd0f h1:oRD16bhpKNAanfcDDVU+J0NXqsgHIvGbbe/sy+r6Rs0= | github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190620160927-9418d7b0cd0f h1:oRD16bhpKNAanfcDDVU+J0NXqsgHIvGbbe/sy+r6Rs0= | ||||||
| github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190620160927-9418d7b0cd0f/go.mod h1:myCDvQSzCW+wB1WAlocEru4wMGJxy+vlxHdhegi1CDQ= | github.com/aliyun/alibaba-cloud-sdk-go v0.0.0-20190620160927-9418d7b0cd0f/go.mod h1:myCDvQSzCW+wB1WAlocEru4wMGJxy+vlxHdhegi1CDQ= | ||||||
| github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5 h1:nWDRPCyCltiTsANwC/n3QZH7Vww33Npq9MKqlwRzI/c= | github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5 h1:nWDRPCyCltiTsANwC/n3QZH7Vww33Npq9MKqlwRzI/c= | ||||||
| github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= | github.com/aliyun/aliyun-oss-go-sdk v0.0.0-20190307165228-86c17b95fcd5/go.mod h1:T/Aws4fEfogEE9v+HPhhw+CntffsBHJ8nXQCwKr0/g8= | ||||||
| github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= | github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= | ||||||
|  | github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= | ||||||
| github.com/apple/foundationdb/bindings/go v0.0.0-20190411004307-cd5c9d91fad2 h1:VoHKYIXEQU5LWoambPBOvYxyLqZYHuj+rj5DVnMUc3k= | github.com/apple/foundationdb/bindings/go v0.0.0-20190411004307-cd5c9d91fad2 h1:VoHKYIXEQU5LWoambPBOvYxyLqZYHuj+rj5DVnMUc3k= | ||||||
| github.com/apple/foundationdb/bindings/go v0.0.0-20190411004307-cd5c9d91fad2/go.mod h1:OMVSB21p9+xQUIqlGizHPZfjK+SHws1ht+ZytVDoz9U= | github.com/apple/foundationdb/bindings/go v0.0.0-20190411004307-cd5c9d91fad2/go.mod h1:OMVSB21p9+xQUIqlGizHPZfjK+SHws1ht+ZytVDoz9U= | ||||||
| github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= | github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= | ||||||
| @@ -129,7 +128,6 @@ github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5 | |||||||
| github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= | github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= | ||||||
| github.com/armon/go-metrics v0.0.0-20190430140413-ec5e00d3c878/go.mod h1:3AMJUQhVx52RsWOnlkpikZr01T/yAVN2gn0861vByNg= | github.com/armon/go-metrics v0.0.0-20190430140413-ec5e00d3c878/go.mod h1:3AMJUQhVx52RsWOnlkpikZr01T/yAVN2gn0861vByNg= | ||||||
| github.com/armon/go-metrics v0.3.0/go.mod h1:zXjbSimjXTd7vOpY8B0/2LpvNvDoXBuplAD+gJD3GYs= | github.com/armon/go-metrics v0.3.0/go.mod h1:zXjbSimjXTd7vOpY8B0/2LpvNvDoXBuplAD+gJD3GYs= | ||||||
| github.com/armon/go-metrics v0.3.3 h1:a9F4rlj7EWWrbj7BYw8J8+x+ZZkJeqzNyRk8hdPF+ro= |  | ||||||
| github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= | github.com/armon/go-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= | ||||||
| github.com/armon/go-metrics v0.3.4 h1:Xqf+7f2Vhl9tsqDYmXhnXInUdcrtgpRNpIA15/uldSc= | github.com/armon/go-metrics v0.3.4 h1:Xqf+7f2Vhl9tsqDYmXhnXInUdcrtgpRNpIA15/uldSc= | ||||||
| github.com/armon/go-metrics v0.3.4/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= | github.com/armon/go-metrics v0.3.4/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= | ||||||
| @@ -138,11 +136,14 @@ github.com/armon/go-proxyproto v0.0.0-20190211145416-68259f75880e/go.mod h1:QmP9 | |||||||
| github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= | github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= | ||||||
| github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= | github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= | ||||||
| github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= | github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= | ||||||
|  | github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= | ||||||
| github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf h1:eg0MeVzsP1G42dRafH3vf+al2vQIJU0YHX+1Tw87oco= | github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf h1:eg0MeVzsP1G42dRafH3vf+al2vQIJU0YHX+1Tw87oco= | ||||||
| github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= | github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= | ||||||
|  | github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= | ||||||
|  | github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= | ||||||
| github.com/aws/aws-sdk-go v1.30.27 h1:9gPjZWVDSoQrBO2AvqrWObS6KAZByfEJxQoCYo4ZfK0= | github.com/aws/aws-sdk-go v1.30.27 h1:9gPjZWVDSoQrBO2AvqrWObS6KAZByfEJxQoCYo4ZfK0= | ||||||
| github.com/aws/aws-sdk-go v1.30.27/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= | github.com/aws/aws-sdk-go v1.30.27/go.mod h1:5zCpMtNQVjRREroY7sYe8lOMRSxkhG6MZveU8YkpAk0= | ||||||
| github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f h1:ZNv7On9kyUzm7fvRZumSyy/IUiSC7AzL0I1jKKtwooA= | github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= | ||||||
| github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= | github.com/baiyubin/aliyun-sts-go-sdk v0.0.0-20180326062324-cfa1a18b161f/go.mod h1:AuiFmCCPBSrqvVMvuqFuk0qogytodnVFVSN5CeJB8Gc= | ||||||
| github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= | github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= | ||||||
| github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= | github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= | ||||||
| @@ -151,9 +152,7 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r | |||||||
| github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= | github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= | ||||||
| github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= | github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= | ||||||
| github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k= | github.com/bitly/go-hostpool v0.0.0-20171023180738-a3a6125de932/go.mod h1:NOuUCSz6Q9T7+igc/hlvDOUdtWKryOrtFyIVABv/p7k= | ||||||
| github.com/bitly/go-hostpool v0.1.0 h1:XKmsF6k5el6xHG3WPJ8U0Ku/ye7njX7W81Ng7O2ioR0= |  | ||||||
| github.com/bitly/go-hostpool v0.1.0/go.mod h1:4gOCgp6+NZnVqlKyZ/iBZFTAJKembaVENUpMkpg42fw= | github.com/bitly/go-hostpool v0.1.0/go.mod h1:4gOCgp6+NZnVqlKyZ/iBZFTAJKembaVENUpMkpg42fw= | ||||||
| github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= |  | ||||||
| github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= | github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= | ||||||
| github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= | github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= | ||||||
| github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8WK8raXaxBx6fRVTlJILwEwQGL1I/ByEI= | github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc h1:biVzkmvwrH8WK8raXaxBx6fRVTlJILwEwQGL1I/ByEI= | ||||||
| @@ -161,6 +160,7 @@ github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBW | |||||||
| github.com/briankassouf/jose v0.9.2-0.20180619214549-d2569464773f h1:ZMEzE7R0WNqgbHplzSBaYJhJi5AZWTCK9baU0ebzG6g= | github.com/briankassouf/jose v0.9.2-0.20180619214549-d2569464773f h1:ZMEzE7R0WNqgbHplzSBaYJhJi5AZWTCK9baU0ebzG6g= | ||||||
| github.com/briankassouf/jose v0.9.2-0.20180619214549-d2569464773f/go.mod h1:HQhVmdUf7dBNwIIdBTivnCDxcf6IZY3/zrb+uKSJz6Y= | github.com/briankassouf/jose v0.9.2-0.20180619214549-d2569464773f/go.mod h1:HQhVmdUf7dBNwIIdBTivnCDxcf6IZY3/zrb+uKSJz6Y= | ||||||
| github.com/c2h5oh/datasize v0.0.0-20200112174442-28bbd4740fee/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= | github.com/c2h5oh/datasize v0.0.0-20200112174442-28bbd4740fee/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= | ||||||
|  | github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= | ||||||
| github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= | github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= | ||||||
| github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= | github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= | ||||||
| github.com/cenkalti/backoff/v3 v3.0.0 h1:ske+9nBpD9qZsTBoF41nW5L+AIuFBKMeze18XQ3eG1c= | github.com/cenkalti/backoff/v3 v3.0.0 h1:ske+9nBpD9qZsTBoF41nW5L+AIuFBKMeze18XQ3eG1c= | ||||||
| @@ -181,18 +181,17 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible h1:C29Ae4G5GtYyY | |||||||
| github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= | github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= | ||||||
| github.com/circonus-labs/circonusllhist v0.1.3 h1:TJH+oke8D16535+jHExHj4nQvzlZrj7ug5D7I/orNUA= | github.com/circonus-labs/circonusllhist v0.1.3 h1:TJH+oke8D16535+jHExHj4nQvzlZrj7ug5D7I/orNUA= | ||||||
| github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= | github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= | ||||||
|  | github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= | ||||||
| github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= | github.com/client9/misspell v0.3.4 h1:ta993UF76GwbvJcIo3Y68y/M3WxlpEHPWIGDkJYwzJI= | ||||||
| github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= | github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= | ||||||
| github.com/cloudfoundry-community/go-cfclient v0.0.0-20190201205600-f136f9222381 h1:rdRS5BT13Iae9ssvcslol66gfOOXjaLYwqerEn/cl9s= | github.com/cloudfoundry-community/go-cfclient v0.0.0-20190201205600-f136f9222381 h1:rdRS5BT13Iae9ssvcslol66gfOOXjaLYwqerEn/cl9s= | ||||||
| github.com/cloudfoundry-community/go-cfclient v0.0.0-20190201205600-f136f9222381/go.mod h1:e5+USP2j8Le2M0Jo3qKPFnNhuo1wueU4nWHCXBOfQ14= | github.com/cloudfoundry-community/go-cfclient v0.0.0-20190201205600-f136f9222381/go.mod h1:e5+USP2j8Le2M0Jo3qKPFnNhuo1wueU4nWHCXBOfQ14= | ||||||
| github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= | github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= | ||||||
| github.com/cockroachdb/apd v1.1.0 h1:3LFP3629v+1aKXU5Q37mxmRxX/pIu1nijXydLShEq5I= |  | ||||||
| github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= | github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= | ||||||
| github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c h1:2zRrJWIt/f9c9HhNHAgrRgq0San5gRRUJTBXLkchal0= | github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c h1:2zRrJWIt/f9c9HhNHAgrRgq0San5gRRUJTBXLkchal0= | ||||||
| github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk= | github.com/cockroachdb/cockroach-go v0.0.0-20181001143604-e0a95dfd547c/go.mod h1:XGLbWH/ujMcbPbhZq52Nv6UrCghb1yGn//133kEsvDk= | ||||||
| github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa h1:OaNxuTZr7kxeODyLWsRMC+OD03aFUH+mW6r2d+MWa5Y= |  | ||||||
| github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= | github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= | ||||||
| github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 h1:sDMmm+q/3+BukdIpxwO365v/Rbspp2Nt5XntgQRXq8Q= | github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= | ||||||
| github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= | github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM= | ||||||
| github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= | github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= | ||||||
| github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= | github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= | ||||||
| @@ -215,16 +214,19 @@ github.com/coreos/go-oidc v2.1.0+incompatible h1:sdJrfw8akMnCuUlaZU3tE/uYXFgfqom | |||||||
| github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= | github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= | ||||||
| github.com/coreos/go-semver v0.2.0 h1:3Jm3tLmsgAYcjC+4Up7hJrFBPr+n7rAqYeSw/SZazuY= | github.com/coreos/go-semver v0.2.0 h1:3Jm3tLmsgAYcjC+4Up7hJrFBPr+n7rAqYeSw/SZazuY= | ||||||
| github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= | github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= | ||||||
|  | github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= | ||||||
| github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= | github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e h1:Wf6HqHfScWJN9/ZjdUKyjop4mf3Qdd+1TvvltAvM3m8= | ||||||
| github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= | github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= | ||||||
| github.com/coreos/go-systemd/v22 v22.0.0 h1:XJIw/+VlJ+87J+doOxznsAWIdmWuViOVhkQamW5YV28= | github.com/coreos/go-systemd/v22 v22.0.0 h1:XJIw/+VlJ+87J+doOxznsAWIdmWuViOVhkQamW5YV28= | ||||||
| github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= | github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= | ||||||
|  | github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= | ||||||
| github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= | github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= | ||||||
| github.com/couchbase/gocb/v2 v2.1.4 h1:HRuVhqZpVNIck3FwzTxWh5TnmGXeTmSfjhxkjeradLg= | github.com/couchbase/gocb/v2 v2.1.4 h1:HRuVhqZpVNIck3FwzTxWh5TnmGXeTmSfjhxkjeradLg= | ||||||
| github.com/couchbase/gocb/v2 v2.1.4/go.mod h1:lESKM6wCEajrFVSZUewYuRzNtuNtnRey5wOfcZZsH90= | github.com/couchbase/gocb/v2 v2.1.4/go.mod h1:lESKM6wCEajrFVSZUewYuRzNtuNtnRey5wOfcZZsH90= | ||||||
| github.com/couchbase/gocbcore/v9 v9.0.4 h1:VM7IiKoK25mq9CdFLLchJMzmHa5Grkn+94pQNaG3oc8= | github.com/couchbase/gocbcore/v9 v9.0.4 h1:VM7IiKoK25mq9CdFLLchJMzmHa5Grkn+94pQNaG3oc8= | ||||||
| github.com/couchbase/gocbcore/v9 v9.0.4/go.mod h1:jOSQeBSECyNvD7aS4lfuaw+pD5t6ciTOf8hrDP/4Nus= | github.com/couchbase/gocbcore/v9 v9.0.4/go.mod h1:jOSQeBSECyNvD7aS4lfuaw+pD5t6ciTOf8hrDP/4Nus= | ||||||
| github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= | github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE= | ||||||
|  | github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= | ||||||
| github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= | github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= | ||||||
| github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= | github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= | ||||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||||
| @@ -254,14 +256,15 @@ github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdf | |||||||
| github.com/duosecurity/duo_api_golang v0.0.0-20190308151101-6c680f768e74 h1:2MIhn2R6oXQbgW5yHfS+d6YqyMfXiu2L55rFZC4UD/M= | github.com/duosecurity/duo_api_golang v0.0.0-20190308151101-6c680f768e74 h1:2MIhn2R6oXQbgW5yHfS+d6YqyMfXiu2L55rFZC4UD/M= | ||||||
| github.com/duosecurity/duo_api_golang v0.0.0-20190308151101-6c680f768e74/go.mod h1:UqXY1lYT/ERa4OEAywUqdok1T4RCRdArkhic1Opuavo= | github.com/duosecurity/duo_api_golang v0.0.0-20190308151101-6c680f768e74/go.mod h1:UqXY1lYT/ERa4OEAywUqdok1T4RCRdArkhic1Opuavo= | ||||||
| github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= | github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= | ||||||
| github.com/dustin/go-humanize v1.0.0 h1:VSnTsYCnlFHaM2/igO1h6X3HA71jcobQuxemgkq4zYo= |  | ||||||
| github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= | github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= | ||||||
| github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= | 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/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/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= | ||||||
|  | github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= | ||||||
| github.com/elazarl/go-bindata-assetfs v1.0.1-0.20200509193318-234c15e7648f h1:AwZUiMWfYSmIiHdFJIubTSs8BFIFoMmUFbeuwBzHIPs= | github.com/elazarl/go-bindata-assetfs v1.0.1-0.20200509193318-234c15e7648f h1:AwZUiMWfYSmIiHdFJIubTSs8BFIFoMmUFbeuwBzHIPs= | ||||||
| github.com/elazarl/go-bindata-assetfs v1.0.1-0.20200509193318-234c15e7648f/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= | github.com/elazarl/go-bindata-assetfs v1.0.1-0.20200509193318-234c15e7648f/go.mod h1:v+YaWX3bdea5J/mo8dSETolEo7R71Vk1u8bnjau5yw4= | ||||||
| github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= | github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= | ||||||
|  | github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= | ||||||
| github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | ||||||
| github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | ||||||
| github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= | github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= | ||||||
| @@ -272,11 +275,11 @@ github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s= | |||||||
| github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= | github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= | ||||||
| github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= | github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= | ||||||
| github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= | github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= | ||||||
|  | github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= | ||||||
|  | github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= | ||||||
| github.com/frankban/quicktest v1.4.0/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= | github.com/frankban/quicktest v1.4.0/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= | ||||||
| github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= | github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= | ||||||
| github.com/frankban/quicktest v1.10.0 h1:Gfh+GAJZOAoKZsIZeZbdn2JF10kN1XHNvjsvQK8gVkE= |  | ||||||
| github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= | github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= | ||||||
| github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I= |  | ||||||
| github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= | github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= | ||||||
| github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa h1:RDBNVkRviHZtvDvId8XSGPu3rmpmSe+wKRcEWNgsfWU= | github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa h1:RDBNVkRviHZtvDvId8XSGPu3rmpmSe+wKRcEWNgsfWU= | ||||||
| github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= | github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= | ||||||
| @@ -296,15 +299,17 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2 | |||||||
| github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= | github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= | ||||||
| github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= | github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= | ||||||
| github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= | github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= | ||||||
|  | github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= | ||||||
| github.com/go-ldap/ldap/v3 v3.1.3/go.mod h1:3rbOH3jRS2u6jg2rJnKAMLE/xQyCKIveG2Sa/Cohzb8= | github.com/go-ldap/ldap/v3 v3.1.3/go.mod h1:3rbOH3jRS2u6jg2rJnKAMLE/xQyCKIveG2Sa/Cohzb8= | ||||||
| github.com/go-ldap/ldap/v3 v3.1.10 h1:7WsKqasmPThNvdl0Q5GPpbTDD/ZD98CfuawrMIuh7qQ= | github.com/go-ldap/ldap/v3 v3.1.10 h1:7WsKqasmPThNvdl0Q5GPpbTDD/ZD98CfuawrMIuh7qQ= | ||||||
| github.com/go-ldap/ldap/v3 v3.1.10/go.mod h1:5Zun81jBTabRaI8lzN7E1JjyEl1g6zI6u9pd8luAK4Q= | github.com/go-ldap/ldap/v3 v3.1.10/go.mod h1:5Zun81jBTabRaI8lzN7E1JjyEl1g6zI6u9pd8luAK4Q= | ||||||
| github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= | github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= | ||||||
| github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= | github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= | ||||||
| github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab h1:xveKWz2iaueeTaUgdetzel+U7exyigDYBryyVfV/rZk= | github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= | ||||||
| github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= | github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8= | ||||||
| github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI= | github.com/go-ole/go-ole v1.2.4 h1:nNBDSCOigTSiarFpYE9J/KtEA1IOW4CNeqT9TQDqCxI= | ||||||
| github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= | github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM= | ||||||
|  | github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= | ||||||
| github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= | github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs= | ||||||
| github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= | github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= | ||||||
| github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= | github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= | ||||||
| @@ -320,6 +325,7 @@ github.com/gocql/gocql v0.0.0-20200624222514-34081eda590e h1:SroDcndcOU9BVAduPf/ | |||||||
| github.com/gocql/gocql v0.0.0-20200624222514-34081eda590e/go.mod h1:DL0ekTmBSTdlNF25Orwt/JMzqIq3EJ4MVa/J/uK64OY= | github.com/gocql/gocql v0.0.0-20200624222514-34081eda590e/go.mod h1:DL0ekTmBSTdlNF25Orwt/JMzqIq3EJ4MVa/J/uK64OY= | ||||||
| github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= | github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= | ||||||
| github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= | github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= | ||||||
|  | github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= | ||||||
| github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= | 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/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= | ||||||
| github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= | github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= | ||||||
| @@ -341,7 +347,6 @@ github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfb | |||||||
| github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= | github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= | ||||||
| github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= | github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= | ||||||
| github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= | github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= | ||||||
| github.com/golang/mock v1.4.3 h1:GV+pQPG/EUUbkh47niozDcADz6go/dUwhVzdUQHIVRw= |  | ||||||
| github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= | github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= | ||||||
| github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | 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/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | ||||||
| @@ -362,12 +367,10 @@ github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8l | |||||||
| github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= | github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4= | ||||||
| github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= | github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= | ||||||
| github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= | github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= | ||||||
| github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo= |  | ||||||
| github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= | github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= | ||||||
| github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= | github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= | ||||||
| github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= | github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= | ||||||
| github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= | github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= | ||||||
| github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= |  | ||||||
| github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||||||
| github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= | github.com/google/go-cmp v0.5.0 h1:/QaMHBdZ26BB3SSst0Iwl10Epc+xhTquomWX0oZEB6w= | ||||||
| github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||||||
| @@ -380,7 +383,6 @@ github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO | |||||||
| github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= | github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= | ||||||
| github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= | github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw= | ||||||
| github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= | ||||||
| github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= |  | ||||||
| github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= | 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/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= | ||||||
| github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= | github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= | ||||||
| @@ -396,41 +398,35 @@ github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+ | |||||||
| github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= | github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= | ||||||
| github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= | github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY= | ||||||
| github.com/gopherjs/gopherjs v0.0.0-20180628210949-0892b62f0d9f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= | github.com/gopherjs/gopherjs v0.0.0-20180628210949-0892b62f0d9f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= | ||||||
| github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= |  | ||||||
| github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= | github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= | ||||||
| github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75 h1:f0n1xnMSmBLzVfsMMvriDyA75NB/oBgILX2GcHXIQzY= | github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75 h1:f0n1xnMSmBLzVfsMMvriDyA75NB/oBgILX2GcHXIQzY= | ||||||
| github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75/go.mod h1:g2644b03hfBX9Ov0ZBDgXXens4rxSxmqFBbhvKv2yVA= | github.com/gorhill/cronexpr v0.0.0-20180427100037-88b0669f7d75/go.mod h1:g2644b03hfBX9Ov0ZBDgXXens4rxSxmqFBbhvKv2yVA= | ||||||
| github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= | github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= | ||||||
| github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= | github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= | ||||||
| github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= | github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= | ||||||
| github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= | github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= | ||||||
| github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ= |  | ||||||
| github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= | github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4= | ||||||
| github.com/gorilla/sessions v1.2.0 h1:S7P+1Hm5V/AT9cjEcUD5uDaQSX0OE577aCXgoaKpYbQ= |  | ||||||
| github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= | github.com/gorilla/sessions v1.2.0/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM= | ||||||
| github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= | github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= | ||||||
| github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= | github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= | ||||||
| github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM= | github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM= | ||||||
| github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= | github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= | ||||||
| github.com/gotestyourself/gotestyourself v2.2.0+incompatible h1:AQwinXlbQR2HvPjQZOmDhRqsv5mZf+Jb1RnSLxcqZcI= |  | ||||||
| github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= | github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= | ||||||
| github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= | github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= | ||||||
| github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4 h1:z53tR0945TRRQO/fLEVPI6SMv7ZflF0TEaTAoU7tOzg= |  | ||||||
| github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= | github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= | ||||||
| github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= |  | ||||||
| github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= | github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= | ||||||
| github.com/grpc-ecosystem/grpc-gateway v1.6.2/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.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= | github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= | ||||||
| github.com/grpc-ecosystem/grpc-gateway v1.9.5 h1:UImYN5qQ8tuGpGE16ZmjvcTtTw24zw1QAp/SlnNrZhI= |  | ||||||
| github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= | github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= | ||||||
| github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc1Q53c0bnx2ufif5kANL7bfZWcc6VJWJd8= | github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc1Q53c0bnx2ufif5kANL7bfZWcc6VJWJd8= | ||||||
| github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= | github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= | ||||||
| github.com/hashicorp/consul-template v0.25.1 h1:+D2s8eyRqWyX7GPNxeUi8tsyh8pRn3J6k8giEchPfKQ= | github.com/hashicorp/consul-template v0.25.1 h1:+D2s8eyRqWyX7GPNxeUi8tsyh8pRn3J6k8giEchPfKQ= | ||||||
| github.com/hashicorp/consul-template v0.25.1/go.mod h1:/vUsrJvDuuQHcxEw0zik+YXTS7ZKWZjQeaQhshBmfH0= | github.com/hashicorp/consul-template v0.25.1/go.mod h1:/vUsrJvDuuQHcxEw0zik+YXTS7ZKWZjQeaQhshBmfH0= | ||||||
|  | github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= | ||||||
| github.com/hashicorp/consul/api v1.4.0 h1:jfESivXnO5uLdH650JU/6AnjRoHrLhULq0FnC3Kp9EY= | github.com/hashicorp/consul/api v1.4.0 h1:jfESivXnO5uLdH650JU/6AnjRoHrLhULq0FnC3Kp9EY= | ||||||
| github.com/hashicorp/consul/api v1.4.0/go.mod h1:xc8u05kyMa3Wjr9eEAsIAo3dg8+LywT5E/Cl7cNS5nU= | github.com/hashicorp/consul/api v1.4.0/go.mod h1:xc8u05kyMa3Wjr9eEAsIAo3dg8+LywT5E/Cl7cNS5nU= | ||||||
| github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= | github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= | ||||||
| github.com/hashicorp/consul/sdk v0.4.0 h1:zBtCfKJZcJDBvSCkQJch4ulp59m1rATFLKwNo/LYY30= | github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= | ||||||
| github.com/hashicorp/consul/sdk v0.4.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM= | github.com/hashicorp/consul/sdk v0.4.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM= | ||||||
| github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= | github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= | ||||||
| github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= | github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= | ||||||
| @@ -439,7 +435,6 @@ github.com/hashicorp/go-bindata v3.0.8-0.20180209072458-bf7910af8997+incompatibl | |||||||
| github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= | github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= | ||||||
| github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= | github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM= | ||||||
| github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= | github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= | ||||||
| github.com/hashicorp/go-gatedio v0.5.0 h1:Jm1X5yP4yCqqWj5L1TgW7iZwCVPGtVc+mro5r/XX7Tg= |  | ||||||
| github.com/hashicorp/go-gatedio v0.5.0/go.mod h1:Lr3t8L6IyxD3DAeaUxGcgl2JnRUpWMCsmBl4Omu/2t4= | github.com/hashicorp/go-gatedio v0.5.0/go.mod h1:Lr3t8L6IyxD3DAeaUxGcgl2JnRUpWMCsmBl4Omu/2t4= | ||||||
| github.com/hashicorp/go-gcp-common v0.5.0/go.mod h1:IDGUI2N/OS3PiU4qZcXJeWKPI6O/9Y8hOrbSiMcqyYw= | github.com/hashicorp/go-gcp-common v0.5.0/go.mod h1:IDGUI2N/OS3PiU4qZcXJeWKPI6O/9Y8hOrbSiMcqyYw= | ||||||
| github.com/hashicorp/go-gcp-common v0.6.0 h1:m1X+DK003bj4WEjqOnv+Csepb3zpfN/bidboUeUSj68= | github.com/hashicorp/go-gcp-common v0.6.0 h1:m1X+DK003bj4WEjqOnv+Csepb3zpfN/bidboUeUSj68= | ||||||
| @@ -449,11 +444,13 @@ github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrj | |||||||
| github.com/hashicorp/go-hclog v0.9.1/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= | github.com/hashicorp/go-hclog v0.9.1/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= | ||||||
| github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= | github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= | ||||||
| github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= | github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= | ||||||
|  | github.com/hashicorp/go-hclog v0.13.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= | ||||||
| github.com/hashicorp/go-hclog v0.14.1 h1:nQcJDQwIAGnmoUWp8ubocEX40cCml/17YkF6csQLReU= | github.com/hashicorp/go-hclog v0.14.1 h1:nQcJDQwIAGnmoUWp8ubocEX40cCml/17YkF6csQLReU= | ||||||
| github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= | github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= | ||||||
| github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= | github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= | ||||||
| github.com/hashicorp/go-immutable-radix v1.1.0 h1:vN9wG1D6KG6YHRTWr8512cxGOVgTMEfgEdSj/hr8MPc= | github.com/hashicorp/go-immutable-radix v1.1.0 h1:vN9wG1D6KG6YHRTWr8512cxGOVgTMEfgEdSj/hr8MPc= | ||||||
| github.com/hashicorp/go-immutable-radix v1.1.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= | github.com/hashicorp/go-immutable-radix v1.1.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= | ||||||
|  | github.com/hashicorp/go-kms-wrapping v0.5.12/go.mod h1:yVIWtGOTh/cdGc++/NOlXLus0hJ19Lz4iFrpF6WsZh4= | ||||||
| github.com/hashicorp/go-kms-wrapping v0.5.16 h1:7qvB7JYLFART/bt1wafobMU5dDeyseE3ZBKB6UiyxWs= | github.com/hashicorp/go-kms-wrapping v0.5.16 h1:7qvB7JYLFART/bt1wafobMU5dDeyseE3ZBKB6UiyxWs= | ||||||
| github.com/hashicorp/go-kms-wrapping v0.5.16/go.mod h1:lxD7e9q7ZyCtDEP+tnMevsEvw3M0gmZnneAgv8BaO1Q= | github.com/hashicorp/go-kms-wrapping v0.5.16/go.mod h1:lxD7e9q7ZyCtDEP+tnMevsEvw3M0gmZnneAgv8BaO1Q= | ||||||
| github.com/hashicorp/go-kms-wrapping/entropy v0.1.0 h1:xuTi5ZwjimfpvpL09jDE71smCBRpnF5xfo871BSX4gs= | github.com/hashicorp/go-kms-wrapping/entropy v0.1.0 h1:xuTi5ZwjimfpvpL09jDE71smCBRpnF5xfo871BSX4gs= | ||||||
| @@ -472,10 +469,10 @@ github.com/hashicorp/go-raftchunking v0.6.3-0.20191002164813-7e9e8525653a h1:Fmn | |||||||
| github.com/hashicorp/go-raftchunking v0.6.3-0.20191002164813-7e9e8525653a/go.mod h1:xbXnmKqX9/+RhPkJ4zrEx4738HacP72aaUPlT2RZ4sU= | github.com/hashicorp/go-raftchunking v0.6.3-0.20191002164813-7e9e8525653a/go.mod h1:xbXnmKqX9/+RhPkJ4zrEx4738HacP72aaUPlT2RZ4sU= | ||||||
| github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= | github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= | ||||||
| github.com/hashicorp/go-retryablehttp v0.6.2/go.mod h1:gEx6HMUGxYYhJScX7W1Il64m6cc2C1mDaW3NQ9sY1FY= | github.com/hashicorp/go-retryablehttp v0.6.2/go.mod h1:gEx6HMUGxYYhJScX7W1Il64m6cc2C1mDaW3NQ9sY1FY= | ||||||
| github.com/hashicorp/go-retryablehttp v0.6.6 h1:HJunrbHTDDbBb/ay4kxa1n+dLmttUlnP3V9oNE4hmsM= |  | ||||||
| github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= | github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= | ||||||
| github.com/hashicorp/go-retryablehttp v0.6.7 h1:8/CAEZt/+F7kR7GevNHulKkUjLht3CPmn7egmhieNKo= | github.com/hashicorp/go-retryablehttp v0.6.7 h1:8/CAEZt/+F7kR7GevNHulKkUjLht3CPmn7egmhieNKo= | ||||||
| github.com/hashicorp/go-retryablehttp v0.6.7/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= | github.com/hashicorp/go-retryablehttp v0.6.7/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= | ||||||
|  | github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= | ||||||
| github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= | github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= | ||||||
| github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= | github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= | ||||||
| github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= | github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= | ||||||
| @@ -503,7 +500,6 @@ github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI | |||||||
| github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= | github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= | ||||||
| github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= | github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= | ||||||
| github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= | github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= | ||||||
| github.com/hashicorp/memberlist v0.1.4 h1:gkyML/r71w3FL8gUi74Vk76avkj/9lYAY9lvg0OcoGs= |  | ||||||
| github.com/hashicorp/memberlist v0.1.4/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= | github.com/hashicorp/memberlist v0.1.4/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= | ||||||
| github.com/hashicorp/nomad/api v0.0.0-20191220223628-edc62acd919d h1:BXqsASWhyiAiEVm6FcltF0dg8XvoookQwmpHn8lstu8= | github.com/hashicorp/nomad/api v0.0.0-20191220223628-edc62acd919d h1:BXqsASWhyiAiEVm6FcltF0dg8XvoookQwmpHn8lstu8= | ||||||
| github.com/hashicorp/nomad/api v0.0.0-20191220223628-edc62acd919d/go.mod h1:WKCL+tLVhN1D+APwH3JiTRZoxcdwRk86bWu1LVCUPaE= | github.com/hashicorp/nomad/api v0.0.0-20191220223628-edc62acd919d/go.mod h1:WKCL+tLVhN1D+APwH3JiTRZoxcdwRk86bWu1LVCUPaE= | ||||||
| @@ -517,6 +513,8 @@ github.com/hashicorp/raft-snapshot v1.0.2-0.20190827162939-8117efcc5aab/go.mod h | |||||||
| github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= | github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= | ||||||
| github.com/hashicorp/serf v0.8.3 h1:MWYcmct5EtKz0efYooPcL0yNkem+7kWxqXDi/UIh+8k= | github.com/hashicorp/serf v0.8.3 h1:MWYcmct5EtKz0efYooPcL0yNkem+7kWxqXDi/UIh+8k= | ||||||
| github.com/hashicorp/serf v0.8.3/go.mod h1:UpNcs7fFbpKIyZaUuSW6EPiH+eZC7OuyFD+wc1oal+k= | github.com/hashicorp/serf v0.8.3/go.mod h1:UpNcs7fFbpKIyZaUuSW6EPiH+eZC7OuyFD+wc1oal+k= | ||||||
|  | github.com/hashicorp/shared-secure-libs v0.0.2 h1:+izKlB8vxpBK+K6zNmB4DZtDEl1a7fB8JmqdBNhnhjs= | ||||||
|  | github.com/hashicorp/shared-secure-libs v0.0.2/go.mod h1:xhtA0FH6AYYFOy0sir7u0O0zzdLi7ofU6oWxy+gjnuc= | ||||||
| github.com/hashicorp/vault-plugin-auth-alicloud v0.5.5 h1:JYf3VYpKs7mOdtcwZWi73S82oXrC/JR7uoPVUd8c4Hk= | github.com/hashicorp/vault-plugin-auth-alicloud v0.5.5 h1:JYf3VYpKs7mOdtcwZWi73S82oXrC/JR7uoPVUd8c4Hk= | ||||||
| github.com/hashicorp/vault-plugin-auth-alicloud v0.5.5/go.mod h1:sQ+VNwPQlemgXHXikYH6onfH9gPwDZ1GUVRLz0ZvHx8= | github.com/hashicorp/vault-plugin-auth-alicloud v0.5.5/go.mod h1:sQ+VNwPQlemgXHXikYH6onfH9gPwDZ1GUVRLz0ZvHx8= | ||||||
| github.com/hashicorp/vault-plugin-auth-azure v0.5.6 h1:yg1zVb0zf5dkCz68sVwO9Y258NkF4kDKFCZHvwidKpo= | github.com/hashicorp/vault-plugin-auth-azure v0.5.6 h1:yg1zVb0zf5dkCz68sVwO9Y258NkF4kDKFCZHvwidKpo= | ||||||
| @@ -536,10 +534,6 @@ github.com/hashicorp/vault-plugin-auth-kubernetes v0.7.1-0.20200921171209-a8c355 | |||||||
| github.com/hashicorp/vault-plugin-auth-kubernetes v0.7.1-0.20200921171209-a8c355e565cb/go.mod h1:2c/k3nsoGPKV+zpAWCiajt4e66vncEq8Li/eKLqErAc= | github.com/hashicorp/vault-plugin-auth-kubernetes v0.7.1-0.20200921171209-a8c355e565cb/go.mod h1:2c/k3nsoGPKV+zpAWCiajt4e66vncEq8Li/eKLqErAc= | ||||||
| github.com/hashicorp/vault-plugin-auth-oci v0.5.5 h1:nIP8g+VZd2V+LY/D5omWhLSnhHuogIJx7Bz6JyLt628= | github.com/hashicorp/vault-plugin-auth-oci v0.5.5 h1:nIP8g+VZd2V+LY/D5omWhLSnhHuogIJx7Bz6JyLt628= | ||||||
| github.com/hashicorp/vault-plugin-auth-oci v0.5.5/go.mod h1:Cn5cjR279Y+snw8LTaiLTko3KGrbigRbsQPOd2D5xDw= | github.com/hashicorp/vault-plugin-auth-oci v0.5.5/go.mod h1:Cn5cjR279Y+snw8LTaiLTko3KGrbigRbsQPOd2D5xDw= | ||||||
| github.com/hashicorp/vault-plugin-database-couchbase v0.1.0 h1:P/ji+KVmIXDyF3dM2PVb5wUpNMeEieFqJpj9derJlPg= |  | ||||||
| github.com/hashicorp/vault-plugin-database-couchbase v0.1.0/go.mod h1:N4esW48+x1CClz6unRkGZGUBBR87iMMLbpHpnkQDiXg= |  | ||||||
| github.com/hashicorp/vault-plugin-database-couchbase v0.1.1-0.20201006201549-a6eff27be5be h1:QypMebL8zdVtZJmJ0LmIdEcZAarLLNGfWoA4ATMRO5I= |  | ||||||
| github.com/hashicorp/vault-plugin-database-couchbase v0.1.1-0.20201006201549-a6eff27be5be/go.mod h1:7bQzTBzTwG0x+E9+MjEVbqBSlN524VvebPOsKJTysXM= |  | ||||||
| github.com/hashicorp/vault-plugin-database-couchbase v0.1.1-0.20201009184913-83c385bec4a2 h1:OtSJIcQjq7VFpIbbY2mT7oy1CAeIdeDB1sTitwikimI= | github.com/hashicorp/vault-plugin-database-couchbase v0.1.1-0.20201009184913-83c385bec4a2 h1:OtSJIcQjq7VFpIbbY2mT7oy1CAeIdeDB1sTitwikimI= | ||||||
| github.com/hashicorp/vault-plugin-database-couchbase v0.1.1-0.20201009184913-83c385bec4a2/go.mod h1:UsqbPpxKodWyNmiEVkL1UkzTUkd33llDcQ34ElAEsuc= | github.com/hashicorp/vault-plugin-database-couchbase v0.1.1-0.20201009184913-83c385bec4a2/go.mod h1:UsqbPpxKodWyNmiEVkL1UkzTUkd33llDcQ34ElAEsuc= | ||||||
| github.com/hashicorp/vault-plugin-database-elasticsearch v0.5.4 h1:YE4qndazWmYGpVOoZI7nDGG+gwTZKzL1Ou4WZQ+Tdxk= | github.com/hashicorp/vault-plugin-database-elasticsearch v0.5.4 h1:YE4qndazWmYGpVOoZI7nDGG+gwTZKzL1Ou4WZQ+Tdxk= | ||||||
| @@ -567,15 +561,15 @@ github.com/hashicorp/vault-plugin-secrets-openldap v0.1.5/go.mod h1:NM+5N+URHHg8 | |||||||
| github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= | github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= | ||||||
| github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ= | github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ= | ||||||
| github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= | github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= | ||||||
| github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= |  | ||||||
| github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= | github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= | ||||||
| github.com/huaweicloud/golangsdk v0.0.0-20200304081349-45ec0797f2a4/go.mod h1:WQBcHRNX9shz3928lWEvstQJtAtYI7ks6XlgtRT9Tcw= | github.com/huaweicloud/golangsdk v0.0.0-20200304081349-45ec0797f2a4/go.mod h1:WQBcHRNX9shz3928lWEvstQJtAtYI7ks6XlgtRT9Tcw= | ||||||
|  | github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= | ||||||
| github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= | github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= | ||||||
| github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= | github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= | ||||||
| github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= | github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= | ||||||
| github.com/influxdata/influxdb v0.0.0-20190411212539-d24b7ba8c4c4 h1:3K3KcD4S6/Y2hevi70EzUTNKOS3cryQyhUnkjE6Tz0w= | github.com/influxdata/influxdb v0.0.0-20190411212539-d24b7ba8c4c4 h1:3K3KcD4S6/Y2hevi70EzUTNKOS3cryQyhUnkjE6Tz0w= | ||||||
| github.com/influxdata/influxdb v0.0.0-20190411212539-d24b7ba8c4c4/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= | github.com/influxdata/influxdb v0.0.0-20190411212539-d24b7ba8c4c4/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= | ||||||
| github.com/jackc/fake v0.0.0-20150926172116-812a484cc733 h1:vr3AYkKovP8uR8AvSGGUK1IDqRa5lAAvEkZG1LKaCRc= | github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= | ||||||
| github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= | github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= | ||||||
| github.com/jackc/pgx v3.3.0+incompatible h1:Wa90/+qsITBAPkAZjiByeIGHFcj3Ztu+VzrrIpHjL90= | github.com/jackc/pgx v3.3.0+incompatible h1:Wa90/+qsITBAPkAZjiByeIGHFcj3Ztu+VzrrIpHjL90= | ||||||
| github.com/jackc/pgx v3.3.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= | github.com/jackc/pgx v3.3.0+incompatible/go.mod h1:0ZGrqGqkRlliWnWB4zKnWtjbSWbGkVEFm4TeybAXq+I= | ||||||
| @@ -602,23 +596,25 @@ github.com/jefferai/jsonx v1.0.0/go.mod h1:OGmqmi2tTeI/PS+qQfBDToLHHJIy/RMp24fPo | |||||||
| github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= | github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= | ||||||
| github.com/jmespath/go-jmespath v0.3.0 h1:OS12ieG61fsCg5+qLJ+SsW9NicxNkg3b25OyT2yCeUc= | github.com/jmespath/go-jmespath v0.3.0 h1:OS12ieG61fsCg5+qLJ+SsW9NicxNkg3b25OyT2yCeUc= | ||||||
| github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= | github.com/jmespath/go-jmespath v0.3.0/go.mod h1:9QtRXoHjLGCJ5IBSaohpXITPlowMeeYCZ7fLUTSywik= | ||||||
| github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo= |  | ||||||
| github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= | github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= | ||||||
| github.com/joyent/triton-go v1.7.1-0.20200416154420-6801d15b779f h1:ENpDacvnr8faw5ugQmEF1QYk+f/Y9lXFvuYmRxykago= | github.com/joyent/triton-go v1.7.1-0.20200416154420-6801d15b779f h1:ENpDacvnr8faw5ugQmEF1QYk+f/Y9lXFvuYmRxykago= | ||||||
| github.com/joyent/triton-go v1.7.1-0.20200416154420-6801d15b779f/go.mod h1:KDSfL7qe5ZfQqvlDMkVjCztbmcpp/c8M77vhQP8ZPvk= | github.com/joyent/triton-go v1.7.1-0.20200416154420-6801d15b779f/go.mod h1:KDSfL7qe5ZfQqvlDMkVjCztbmcpp/c8M77vhQP8ZPvk= | ||||||
|  | github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= | ||||||
| github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= | github.com/json-iterator/go v0.0.0-20180701071628-ab8a2e0c74be/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= | ||||||
| github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= | github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= | ||||||
| github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= | github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= | ||||||
| github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= | github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= | ||||||
| github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= | github.com/json-iterator/go v1.1.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= | ||||||
| github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= | github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= | ||||||
|  | github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68= | ||||||
|  | github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= | ||||||
| github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= | github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= | ||||||
| github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= | github.com/jstemmer/go-junit-report v0.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= | ||||||
| github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= | github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= | ||||||
| github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= | github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= | ||||||
| github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= |  | ||||||
| github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= | github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= | ||||||
| github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= | github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= | ||||||
|  | github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= | ||||||
| github.com/kelseyhightower/envconfig v1.3.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= | github.com/kelseyhightower/envconfig v1.3.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= | ||||||
| github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8= | github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8= | ||||||
| github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= | github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= | ||||||
| @@ -645,8 +641,10 @@ github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= | |||||||
| github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= | github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= | ||||||
| github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg= | github.com/lib/pq v1.8.0 h1:9xohqzkUwzR4Ga4ivdTcawVS89YSDVxXMa3xJX3cGzg= | ||||||
| github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= | github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= | ||||||
|  | github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= | ||||||
|  | github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= | ||||||
|  | github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= | ||||||
| github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= | github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= | ||||||
| github.com/martini-contrib/render v0.0.0-20150707142108-ec18f8345a11 h1:YFh+sjyJTMQSYjKwM4dFKhJPJC/wfo98tPUc17HdoYw= |  | ||||||
| github.com/martini-contrib/render v0.0.0-20150707142108-ec18f8345a11/go.mod h1:Ah2dBMoxZEqk118as2T4u4fjfXarE0pPnMJaArZQZsI= | github.com/martini-contrib/render v0.0.0-20150707142108-ec18f8345a11/go.mod h1:Ah2dBMoxZEqk118as2T4u4fjfXarE0pPnMJaArZQZsI= | ||||||
| github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= | github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= | ||||||
| github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= | github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= | ||||||
| @@ -672,12 +670,13 @@ github.com/mholt/archiver v3.1.1+incompatible/go.mod h1:Dh2dOXnSdiLxRiPoVfIr/fI1 | |||||||
| github.com/michaelklishin/rabbit-hole v0.0.0-20191008194146-93d9988f0cd5 h1:uA3b4GgZMZxAJsTkd+CVQ85b7KBlD7HLpd/FfTNlGN0= | github.com/michaelklishin/rabbit-hole v0.0.0-20191008194146-93d9988f0cd5 h1:uA3b4GgZMZxAJsTkd+CVQ85b7KBlD7HLpd/FfTNlGN0= | ||||||
| github.com/michaelklishin/rabbit-hole v0.0.0-20191008194146-93d9988f0cd5/go.mod h1:+pmbihVqjC3GPdfWv1V2TnRSuVvwrWLKfEP/MZVB/Wc= | github.com/michaelklishin/rabbit-hole v0.0.0-20191008194146-93d9988f0cd5/go.mod h1:+pmbihVqjC3GPdfWv1V2TnRSuVvwrWLKfEP/MZVB/Wc= | ||||||
| github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= | github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= | ||||||
| github.com/miekg/dns v1.1.15 h1:CSSIDtllwGLMoA6zjdKnaE6Tx6eVUxQ29LUgGetiDCI= |  | ||||||
| github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= | github.com/miekg/dns v1.1.15/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= | ||||||
| github.com/mitchellh/cli v1.0.0 h1:iGBIsUe3+HZ/AD/Vd7DErOt5sU9fa8Uj7A2s1aggv1Y= |  | ||||||
| github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= | github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= | ||||||
|  | github.com/mitchellh/cli v1.1.1 h1:J64v/xD7Clql+JVKSvkYojLOXu1ibnY9ZjGLwSt/89w= | ||||||
|  | github.com/mitchellh/cli v1.1.1/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= | ||||||
| github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= | github.com/mitchellh/copystructure v1.0.0 h1:Laisrj+bAB6b/yJwB5Bt3ITZhGJdqmxquMKeZ+mmkFQ= | ||||||
| github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= | github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= | ||||||
|  | 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 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= | ||||||
| github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= | github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= | ||||||
| github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= | github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= | ||||||
| @@ -709,18 +708,26 @@ github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9 | |||||||
| github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= | github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= | ||||||
| github.com/mongodb/go-client-mongodb-atlas v0.1.2 h1:qmUme1TlQBPZupmXMnpD8DxnfGXLVGs3w+0Z17HBiSA= | github.com/mongodb/go-client-mongodb-atlas v0.1.2 h1:qmUme1TlQBPZupmXMnpD8DxnfGXLVGs3w+0Z17HBiSA= | ||||||
| github.com/mongodb/go-client-mongodb-atlas v0.1.2/go.mod h1:LS8O0YLkA+sbtOb3fZLF10yY3tJM+1xATXMJ3oU35LU= | github.com/mongodb/go-client-mongodb-atlas v0.1.2/go.mod h1:LS8O0YLkA+sbtOb3fZLF10yY3tJM+1xATXMJ3oU35LU= | ||||||
| github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= |  | ||||||
| github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= | github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= | ||||||
| github.com/mwielbut/pointy v1.1.0 h1:U5/YEfoIkaGCHv0St3CgjduqXID4FNRoyZgLM1kY9vg= | github.com/mwielbut/pointy v1.1.0 h1:U5/YEfoIkaGCHv0St3CgjduqXID4FNRoyZgLM1kY9vg= | ||||||
| github.com/mwielbut/pointy v1.1.0/go.mod h1:MvvO+uMFj9T5DMda33HlvogsFBX7pWWKAkFIn4teYwY= | github.com/mwielbut/pointy v1.1.0/go.mod h1:MvvO+uMFj9T5DMda33HlvogsFBX7pWWKAkFIn4teYwY= | ||||||
| github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= | github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= | ||||||
|  | github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= | ||||||
| github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= | github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= | ||||||
| github.com/natefinch/atomic v0.0.0-20150920032501-a62ce929ffcc h1:7xGrl4tTpBQu5Zjll08WupHyq+Sp0Z/adtyf1cfk3Q8= | github.com/natefinch/atomic v0.0.0-20150920032501-a62ce929ffcc h1:7xGrl4tTpBQu5Zjll08WupHyq+Sp0Z/adtyf1cfk3Q8= | ||||||
| github.com/natefinch/atomic v0.0.0-20150920032501-a62ce929ffcc/go.mod h1:1rLVY/DWf3U6vSZgH16S7pymfrhK2lcUlXjgGglw/lY= | github.com/natefinch/atomic v0.0.0-20150920032501-a62ce929ffcc/go.mod h1:1rLVY/DWf3U6vSZgH16S7pymfrhK2lcUlXjgGglw/lY= | ||||||
|  | github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= | ||||||
|  | github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= | ||||||
|  | github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= | ||||||
|  | github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= | ||||||
|  | github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= | ||||||
|  | github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= | ||||||
|  | github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= | ||||||
| github.com/ncw/swift v1.0.47 h1:4DQRPj35Y41WogBxyhOXlrI37nzGlyEcsforeudyYPQ= | github.com/ncw/swift v1.0.47 h1:4DQRPj35Y41WogBxyhOXlrI37nzGlyEcsforeudyYPQ= | ||||||
| github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= | github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= | ||||||
| github.com/nwaples/rardecode v1.1.0 h1:vSxaY8vQhOcVr4mm5e8XllHWTiM4JF507A0Katqw7MQ= | github.com/nwaples/rardecode v1.1.0 h1:vSxaY8vQhOcVr4mm5e8XllHWTiM4JF507A0Katqw7MQ= | ||||||
| github.com/nwaples/rardecode v1.1.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0= | github.com/nwaples/rardecode v1.1.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0= | ||||||
|  | github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= | ||||||
| github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= | github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= | ||||||
| github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= | github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= | ||||||
| github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= | github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= | ||||||
| @@ -733,13 +740,12 @@ github.com/olekukonko/tablewriter v0.0.0-20180130162743-b8a9be070da4/go.mod h1:v | |||||||
| github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= | 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/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= | ||||||
| github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= | github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= | ||||||
| github.com/onsi/ginkgo v1.10.1 h1:q/mM8GF/n0shIN8SaAZ0V+jnLPzen6WIVZdiwrRlMlo= |  | ||||||
| github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= | github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= | ||||||
| github.com/onsi/gomega v0.0.0-20190113212917-5533ce8a0da3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= | github.com/onsi/gomega v0.0.0-20190113212917-5533ce8a0da3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= | ||||||
| github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= | github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= | ||||||
| github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= | github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= | ||||||
| github.com/onsi/gomega v1.7.0 h1:XPnZz8VVBHjVsy1vzJmRwIcSwiUO+JFfrv/xGiigmME= |  | ||||||
| github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= | github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= | ||||||
|  | github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= | ||||||
| github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= | github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= | ||||||
| github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= | github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= | ||||||
| github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= | github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= | ||||||
| @@ -751,25 +757,34 @@ github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59P | |||||||
| github.com/opencontainers/runc v1.0.0-rc9 h1:/k06BMULKF5hidyoZymkoDCzdJzltZpz/UU4LguQVtc= | github.com/opencontainers/runc v1.0.0-rc9 h1:/k06BMULKF5hidyoZymkoDCzdJzltZpz/UU4LguQVtc= | ||||||
| github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= | github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= | ||||||
| github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= | github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= | ||||||
|  | github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= | ||||||
|  | github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= | ||||||
|  | github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= | ||||||
|  | github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= | ||||||
|  | github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= | ||||||
| github.com/openzipkin/zipkin-go v0.1.3/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/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= | github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= | ||||||
|  | github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= | ||||||
|  | github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= | ||||||
| github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= | github.com/oracle/oci-go-sdk v7.0.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= | ||||||
| github.com/oracle/oci-go-sdk v12.5.0+incompatible h1:pr08ECoaDKHWO9tnzJB1YqClEs7ZK1CFOez2DQocH14= | github.com/oracle/oci-go-sdk v12.5.0+incompatible h1:pr08ECoaDKHWO9tnzJB1YqClEs7ZK1CFOez2DQocH14= | ||||||
| github.com/oracle/oci-go-sdk v12.5.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= | github.com/oracle/oci-go-sdk v12.5.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= | ||||||
| github.com/ory/dockertest v3.3.4+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= | github.com/ory/dockertest v3.3.4+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= | ||||||
| github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= | github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= | ||||||
| github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= | github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= | ||||||
| github.com/oxtoacart/bpool v0.0.0-20150712133111-4e1c5567d7c2 h1:CXwSGu/LYmbjEab5aMCs5usQRVBGThelUKBNnoSOuso= |  | ||||||
| github.com/oxtoacart/bpool v0.0.0-20150712133111-4e1c5567d7c2/go.mod h1:L3UMQOThbttwfYRNFOWLLVXMhk5Lkio4GGOtw5UrxS0= | github.com/oxtoacart/bpool v0.0.0-20150712133111-4e1c5567d7c2/go.mod h1:L3UMQOThbttwfYRNFOWLLVXMhk5Lkio4GGOtw5UrxS0= | ||||||
|  | github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= | ||||||
| github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= | github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= | ||||||
| github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= |  | ||||||
| github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= | github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= | ||||||
| github.com/patrickmn/go-cache v0.0.0-20180815053127-5633e0862627/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= | github.com/patrickmn/go-cache v0.0.0-20180815053127-5633e0862627/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= | ||||||
| github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= | github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= | ||||||
| github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= | github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= | ||||||
|  | github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= | ||||||
| github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= | github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= | ||||||
|  | github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= | ||||||
| github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= | github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 h1:q2e307iGHPdTGp0hoxKjt1H5pDo6utceo3dQVK3I5XQ= | ||||||
| github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= | github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= | ||||||
|  | github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= | ||||||
| github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= | github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= | ||||||
| github.com/pierrec/lz4 v2.2.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= | github.com/pierrec/lz4 v2.2.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= | ||||||
| github.com/pierrec/lz4 v2.2.6+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= | github.com/pierrec/lz4 v2.2.6+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= | ||||||
| @@ -780,6 +795,7 @@ github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV | |||||||
| github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||||
| github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= | ||||||
| github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= | ||||||
|  | github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= | ||||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | 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/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||||
| github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= | github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= | ||||||
| @@ -794,12 +810,15 @@ github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4 | |||||||
| github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= | github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= | ||||||
| github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= | github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= | ||||||
| github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= | github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= | ||||||
| github.com/prometheus/client_golang v1.4.0 h1:YVIb/fVcOTMSqtqZWSKnHpSLBxu8DKgxq8z6RuBZwqI= | github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= | ||||||
| github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= | github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= | ||||||
|  | github.com/prometheus/client_golang v1.7.1 h1:NTGy1Ja9pByO+xAeH/qiWnLrKtr3hJPNjaVUwnjpdpA= | ||||||
|  | github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= | ||||||
| github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= | 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/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= | ||||||
| github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | ||||||
| github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | ||||||
|  | github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | ||||||
| github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= | github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= | ||||||
| github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | ||||||
| github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= | github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= | ||||||
| @@ -807,16 +826,20 @@ github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7q | |||||||
| github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= | github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= | ||||||
| github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= | github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= | ||||||
| github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= | github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= | ||||||
| github.com/prometheus/common v0.9.1 h1:KOMtN28tlbam3/7ZKEYKHhKoJZYYj3gMH4uc62x7X7U= | github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= | ||||||
| github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= | github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= | ||||||
|  | github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= | ||||||
|  | github.com/prometheus/common v0.11.1 h1:0ZISXCMRuCZcxF77aT1BXY5m74mX2vrGYl1dSwBI0Jo= | ||||||
|  | github.com/prometheus/common v0.11.1/go.mod h1:U+gB1OBLb1lF3O42bTCL+FK18tX9Oar16Clt/msog/s= | ||||||
| github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= | github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/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-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= | ||||||
| github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= | github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= | ||||||
| github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= | github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= | ||||||
| github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= | github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= | ||||||
| github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= | github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= | ||||||
| github.com/prometheus/procfs v0.0.8 h1:+fpWZdT24pJBiqJdAwYBjPSk+5YmQzYNPYzQsdzLkt8= |  | ||||||
| github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= | github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= | ||||||
|  | github.com/prometheus/procfs v0.1.3 h1:F0+tqvhOksq22sc6iCHF5WGlWjdwj92p0udFh1VFBS8= | ||||||
|  | github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= | ||||||
| github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= | github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= | ||||||
| github.com/rboyer/safeio v0.2.1 h1:05xhhdRNAdS3apYm7JRjOqngf4xruaW959jmRxGDuSU= | github.com/rboyer/safeio v0.2.1 h1:05xhhdRNAdS3apYm7JRjOqngf4xruaW959jmRxGDuSU= | ||||||
| github.com/rboyer/safeio v0.2.1/go.mod h1:Cq/cEPK+YXFn622lsQ0K4KsPZSPtaptHHEldsy7Fmig= | github.com/rboyer/safeio v0.2.1/go.mod h1:Cq/cEPK+YXFn622lsQ0K4KsPZSPtaptHHEldsy7Fmig= | ||||||
| @@ -825,27 +848,26 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So | |||||||
| github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= | github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= | ||||||
| github.com/rs/zerolog v1.4.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= | github.com/rs/zerolog v1.4.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= | ||||||
| github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= | github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= | ||||||
|  | github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= | ||||||
| github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= | github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= | ||||||
| github.com/ryanuber/columnize v2.1.0+incompatible h1:j1Wcmh8OrK4Q7GXY+V7SVSY8nUWQxHW5TkBe7YUl+2s= | github.com/ryanuber/columnize v2.1.0+incompatible h1:j1Wcmh8OrK4Q7GXY+V7SVSY8nUWQxHW5TkBe7YUl+2s= | ||||||
| github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= | github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= | ||||||
| github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= | github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= | ||||||
| github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= | github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= | ||||||
| github.com/samuel/go-zookeeper v0.0.0-20180130194729-c4fab1ac1bec h1:6ncX5ko6B9LntYM0YBRXkiSaZMmLYeZ/NWcmeB43mMY= | github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU= | ||||||
| github.com/samuel/go-zookeeper v0.0.0-20180130194729-c4fab1ac1bec/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= | github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= | ||||||
| github.com/sasha-s/go-deadlock v0.2.0 h1:lMqc+fUb7RrFS3gQLtoQsJ7/6TV/pAIFvBsqX73DK8Y= | github.com/sasha-s/go-deadlock v0.2.0 h1:lMqc+fUb7RrFS3gQLtoQsJ7/6TV/pAIFvBsqX73DK8Y= | ||||||
| github.com/sasha-s/go-deadlock v0.2.0/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZqiDbRupzT10= | github.com/sasha-s/go-deadlock v0.2.0/go.mod h1:StQn567HiB1fF2yJ44N9au7wOhrPS3iZqiDbRupzT10= | ||||||
| github.com/satori/go.uuid v1.2.0 h1:0uYX9dsZ2yD7q2RtLRtPSdGDWzjeM3TbMJP9utgA0ww= |  | ||||||
| github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= | github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= | ||||||
| github.com/sean-/conswriter v0.0.0-20180208195008-f5ae3917a627/go.mod h1:7zjs06qF79/FKAJpBvFx3P8Ww4UTIMAe+lpNXDHziac= | github.com/sean-/conswriter v0.0.0-20180208195008-f5ae3917a627/go.mod h1:7zjs06qF79/FKAJpBvFx3P8Ww4UTIMAe+lpNXDHziac= | ||||||
| github.com/sean-/pager v0.0.0-20180208200047-666be9bf53b5/go.mod h1:BeybITEsBEg6qbIiqJ6/Bqeq25bCLbL7YFmpaFfJDuM= | github.com/sean-/pager v0.0.0-20180208200047-666be9bf53b5/go.mod h1:BeybITEsBEg6qbIiqJ6/Bqeq25bCLbL7YFmpaFfJDuM= | ||||||
| github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= |  | ||||||
| github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= | github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= | ||||||
| github.com/sethvargo/go-limiter v0.3.0 h1:yRMc+Qs2yqw6YJp6UxrO2iUs6DOSq4zcnljbB7/rMns= | github.com/sethvargo/go-limiter v0.3.0 h1:yRMc+Qs2yqw6YJp6UxrO2iUs6DOSq4zcnljbB7/rMns= | ||||||
| github.com/sethvargo/go-limiter v0.3.0/go.mod h1:C0kbSFbiriE5k2FFOe18M1YZbAR2Fiwf72uGu0CXCcU= | github.com/sethvargo/go-limiter v0.3.0/go.mod h1:C0kbSFbiriE5k2FFOe18M1YZbAR2Fiwf72uGu0CXCcU= | ||||||
| github.com/shirou/gopsutil v2.20.6-0.20200630091542-01afd763e6c0+incompatible h1:IYOqH6sML3rQGNVEQ5foLtpDt4TeW8PIUBuI9f8itkI= | github.com/shirou/gopsutil v2.20.6-0.20200630091542-01afd763e6c0+incompatible h1:IYOqH6sML3rQGNVEQ5foLtpDt4TeW8PIUBuI9f8itkI= | ||||||
| github.com/shirou/gopsutil v2.20.6-0.20200630091542-01afd763e6c0+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= | github.com/shirou/gopsutil v2.20.6-0.20200630091542-01afd763e6c0+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= | ||||||
| github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24 h1:pntxY8Ary0t43dCZ5dqY4YTJCObLY1kIXl0uzMv+7DE= |  | ||||||
| github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= | github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= | ||||||
|  | github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= | ||||||
| github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= | github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= | ||||||
| github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= | github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= | ||||||
| github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= | github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= | ||||||
| @@ -853,13 +875,12 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd | |||||||
| github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I= | github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I= | ||||||
| github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= | github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= | ||||||
| github.com/smartystreets/assertions v0.0.0-20180725160413-e900ae048470/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= | github.com/smartystreets/assertions v0.0.0-20180725160413-e900ae048470/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= | ||||||
| github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d h1:zE9ykElWQ6/NYmHa3jpm/yHnI4xSofP+UP6SpjHcSeM= |  | ||||||
| github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= | github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= | ||||||
| github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= | github.com/smartystreets/goconvey v0.0.0-20180222194500-ef6db91d284a/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s= | ||||||
| github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a h1:pa8hGb/2YqsZKovtsgrwcDH1RZhVbTKCjLp47XpqCDs= |  | ||||||
| github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= | github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= | ||||||
| github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= | github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= | ||||||
| github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= | github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= | ||||||
|  | github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= | ||||||
| github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= | github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= | ||||||
| github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= | github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ= | ||||||
| github.com/spf13/afero v1.2.1/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= | github.com/spf13/afero v1.2.1/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= | ||||||
| @@ -870,16 +891,15 @@ github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tL | |||||||
| github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= | github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= | ||||||
| github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= | github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= | ||||||
| github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= | github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= | ||||||
| github.com/spf13/pflag v1.0.3 h1:zPAT6CGy6wXeQ7NtTnaTerfKOsV6V6F8agHXFiazDkg= |  | ||||||
| github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= | github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= | ||||||
| github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= |  | ||||||
| github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= | github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= | ||||||
| github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= | github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s= | ||||||
| github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= | github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= | ||||||
| github.com/square/go-jose v2.4.1+incompatible/go.mod h1:7MxpAF/1WTVUu8Am+T5kNy+t0902CaLWM4Z745MkOa8= | github.com/square/go-jose v2.4.1+incompatible/go.mod h1:7MxpAF/1WTVUu8Am+T5kNy+t0902CaLWM4Z745MkOa8= | ||||||
| github.com/square/go-jose/v3 v3.0.0-20200225220504-708a9fe87ddc/go.mod h1:JbpHhNyeVc538vtj/ECJ3gPYm1VEitNjsLhm4eJQQbg= | github.com/square/go-jose/v3 v3.0.0-20200225220504-708a9fe87ddc/go.mod h1:JbpHhNyeVc538vtj/ECJ3gPYm1VEitNjsLhm4eJQQbg= | ||||||
| github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94 h1:0ngsPmuP6XIjiFRNFYlvKwSr5zff2v+uPHaffZ6/M4k= |  | ||||||
| github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= | github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= | ||||||
|  | github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= | ||||||
|  | github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= | ||||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | 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/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||||
| github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= | github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= | ||||||
| @@ -887,15 +907,12 @@ github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoH | |||||||
| github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= | github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= | ||||||
| github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | ||||||
| github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= | github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= | ||||||
| github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= |  | ||||||
| github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= | github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= | ||||||
| github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= | github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd0= | ||||||
| github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||||||
| github.com/tencentcloud/tencentcloud-sdk-go v3.0.171+incompatible/go.mod h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4= | github.com/tencentcloud/tencentcloud-sdk-go v3.0.171+incompatible/go.mod h1:0PfYow01SHPMhKY31xa+EFz2RStxIqj6JFAJS+IkCi4= | ||||||
| github.com/tidwall/pretty v1.0.1 h1:WE4RBSZ1x6McVVC8S/Md+Qse8YUv6HRObAx6ke00NY8= |  | ||||||
| github.com/tidwall/pretty v1.0.1/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= | github.com/tidwall/pretty v1.0.1/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= | ||||||
| github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= | github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= | ||||||
| github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ= |  | ||||||
| github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= | github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= | ||||||
| github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926 h1:G3dpKMzFDjgEh2q1Z7zUUtKa8ViPtH+ocF0bE0g00O8= | github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926 h1:G3dpKMzFDjgEh2q1Z7zUUtKa8ViPtH+ocF0bE0g00O8= | ||||||
| github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= | github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= | ||||||
| @@ -906,13 +923,13 @@ github.com/ulikunitz/xz v0.5.7 h1:YvTNdFzX6+W5m9msiYg/zpkSURPPtOlzbqYjrFn7Yt4= | |||||||
| github.com/ulikunitz/xz v0.5.7/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= | github.com/ulikunitz/xz v0.5.7/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= | ||||||
| github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= | github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= | ||||||
| github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= | github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= | ||||||
|  | github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= | ||||||
| github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c h1:u40Z8hqBAAQyv+vATcGgV0YCnDjqSL7/q/JyPhhJSPk= | github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c h1:u40Z8hqBAAQyv+vATcGgV0YCnDjqSL7/q/JyPhhJSPk= | ||||||
| github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= | github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhemzwFU4jHLhdvlE6uDZjXFejJXr49I= | ||||||
| github.com/xdg/stringprep v1.0.0 h1:d9X0esnoa3dFsV0FG35rAT0RIhYFlPq7MiP+DW89La0= | github.com/xdg/stringprep v1.0.0 h1:d9X0esnoa3dFsV0FG35rAT0RIhYFlPq7MiP+DW89La0= | ||||||
| github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= | github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= | ||||||
| github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= | github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo= | ||||||
| github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= | github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos= | ||||||
| github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8= |  | ||||||
| github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= | github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= | ||||||
| github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= | github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= | ||||||
| github.com/yandex-cloud/go-genproto v0.0.0-20200722140432-762fe965ce77/go.mod h1:HEUYX/p8966tMUHHT+TsS0hF/Ca/NYwqprC5WXSDMfE= | github.com/yandex-cloud/go-genproto v0.0.0-20200722140432-762fe965ce77/go.mod h1:HEUYX/p8966tMUHHT+TsS0hF/Ca/NYwqprC5WXSDMfE= | ||||||
| @@ -920,10 +937,11 @@ github.com/yandex-cloud/go-sdk v0.0.0-20200722140627-2194e5077f13/go.mod h1:LEdA | |||||||
| github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||||
| github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||||
| go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= | go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= | ||||||
| go.etcd.io/bbolt v1.3.4 h1:hi1bXHMVrlQh6WwxAy+qZCV/SYIlqo+Ushwdpa4tAKg= | go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= | ||||||
| go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= | go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= | ||||||
| go.etcd.io/bbolt v1.3.5 h1:XAzx9gjCb0Rxj7EoqcClPD1d5ZBxZJk0jbuoPHenBt0= | go.etcd.io/bbolt v1.3.5 h1:XAzx9gjCb0Rxj7EoqcClPD1d5ZBxZJk0jbuoPHenBt0= | ||||||
| go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= | go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= | ||||||
|  | go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= | ||||||
| go.etcd.io/etcd v0.5.0-alpha.5.0.20200425165423-262c93980547 h1:s71VGheLtWmCYsnNjf+s7XE8HsrZnd3EYGrLGWVm7nY= | go.etcd.io/etcd v0.5.0-alpha.5.0.20200425165423-262c93980547 h1:s71VGheLtWmCYsnNjf+s7XE8HsrZnd3EYGrLGWVm7nY= | ||||||
| go.etcd.io/etcd v0.5.0-alpha.5.0.20200425165423-262c93980547/go.mod h1:YoUyTScD3Vcv2RBm3eGVOq7i1ULiz3OuXoQFWOirmAM= | go.etcd.io/etcd v0.5.0-alpha.5.0.20200425165423-262c93980547/go.mod h1:YoUyTScD3Vcv2RBm3eGVOq7i1ULiz3OuXoQFWOirmAM= | ||||||
| go.mongodb.org/mongo-driver v1.2.1 h1:ANAlYXXM5XmOdW/Nc38jOr+wS5nlk7YihT24U1imiWM= | go.mongodb.org/mongo-driver v1.2.1 h1:ANAlYXXM5XmOdW/Nc38jOr+wS5nlk7YihT24U1imiWM= | ||||||
| @@ -931,20 +949,24 @@ go.mongodb.org/mongo-driver v1.2.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qL | |||||||
| go.opencensus.io v0.19.1/go.mod h1:gug0GbSHa8Pafr0d2urOSgoXHZ6x/RUlaiT0d9pqb4A= | go.opencensus.io v0.19.1/go.mod h1:gug0GbSHa8Pafr0d2urOSgoXHZ6x/RUlaiT0d9pqb4A= | ||||||
| go.opencensus.io v0.19.2/go.mod h1:NO/8qkisMZLZ1FCsKNqtJPwc8/TaclWyY0B6wcYNg9M= | go.opencensus.io v0.19.2/go.mod h1:NO/8qkisMZLZ1FCsKNqtJPwc8/TaclWyY0B6wcYNg9M= | ||||||
| go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= | 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/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= | go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= | ||||||
| go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= | go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= | ||||||
| go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= | go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= | ||||||
| go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8= | go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8= | ||||||
| go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= | go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= | ||||||
|  | go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= | ||||||
| go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= | go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= | ||||||
|  | go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= | ||||||
| go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= | go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= | ||||||
| go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= | go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= | ||||||
| go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= | go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= | ||||||
|  | go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= | ||||||
| go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A= | go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A= | ||||||
| go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= | go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= | ||||||
| go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= |  | ||||||
| go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= | go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= | ||||||
| go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= | go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= | ||||||
|  | go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= | ||||||
| go.uber.org/zap v1.14.1 h1:nYDKopTbvAPq/NrUVZwT15y2lpROBiLLyoRTbXOYWOo= | go.uber.org/zap v1.14.1 h1:nYDKopTbvAPq/NrUVZwT15y2lpROBiLLyoRTbXOYWOo= | ||||||
| go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= | go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= | ||||||
| golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= | golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= | ||||||
| @@ -964,8 +986,10 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U | |||||||
| golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||||
| golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | golang.org/x/crypto v0.0.0-20200117160349-530e935923ad/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||||
| golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||||
| golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9 h1:vEg9joUBmeBcK9iSJftGNf3coIG4HqZElCPehJsfAYM= | golang.org/x/crypto v0.0.0-20200510223506-06a226fb4e37/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||||
| golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||||
|  | golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI= | ||||||
|  | golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||||
| golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | ||||||
| golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | ||||||
| golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= | golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= | ||||||
| @@ -1031,9 +1055,11 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL | |||||||
| golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||||
| golang.org/x/net v0.0.0-20200320220750-118fecf932d8/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | golang.org/x/net v0.0.0-20200320220750-118fecf932d8/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||||
| golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= | golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= | ||||||
|  | golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= | ||||||
| golang.org/x/net v0.0.0-20200519113804-d87ec0cfa476/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= | golang.org/x/net v0.0.0-20200519113804-d87ec0cfa476/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= | ||||||
| golang.org/x/net v0.0.0-20200602114024-627f9648deb9 h1:pNX+40auqi2JqRfOP1akLGtYcn15TUbkhwuCO3foqqM= |  | ||||||
| golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= | golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= | ||||||
|  | golang.org/x/net v0.0.0-20200625001655-4c5254603344 h1:vGXIOMxbNfDTk/aXCmfdLgkrSV+Z2tcbze+pEc3v5W4= | ||||||
|  | golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= | ||||||
| golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | 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-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | ||||||
| golang.org/x/oauth2 v0.0.0-20190130055435-99b60b757ec1/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= | golang.org/x/oauth2 v0.0.0-20190130055435-99b60b757ec1/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= | ||||||
| @@ -1078,12 +1104,15 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w | |||||||
| golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20190712062909-fae7ac547cb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
|  | golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
|  | golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
|  | golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| @@ -1098,6 +1127,7 @@ golang.org/x/sys v0.0.0-20200409092240-59c9f1ba88fa/go.mod h1:h1NjWce9XRLGQEsW7w | |||||||
| golang.org/x/sys v0.0.0-20200413165638-669c56c373c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20200413165638-669c56c373c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20200602225109-6fdc65e7d980/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
|  | golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae h1:Ih9Yo4hSPImZOpfGuA4bR/ORKTAbhZo2AbWNRCnevdo= | golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae h1:Ih9Yo4hSPImZOpfGuA4bR/ORKTAbhZo2AbWNRCnevdo= | ||||||
| golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||||
| golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||||
| @@ -1143,6 +1173,7 @@ golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtn | |||||||
| golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||||
| golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||||
| golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||||
|  | golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||||
| golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||||
| golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||||
| golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||||
| @@ -1184,6 +1215,7 @@ google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M | |||||||
| google.golang.org/api v0.29.0 h1:BaiDisFir8O4IJxvAabCGGkQ6yCJegNQqSVoYUNAnbk= | google.golang.org/api v0.29.0 h1:BaiDisFir8O4IJxvAabCGGkQ6yCJegNQqSVoYUNAnbk= | ||||||
| google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= | google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= | ||||||
| google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= | google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= | ||||||
|  | google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= | ||||||
| google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= | 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/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= | ||||||
| google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= | google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= | ||||||
| @@ -1200,6 +1232,7 @@ google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRn | |||||||
| google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= | google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/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-20190508193815-b515fa19cec8/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= | ||||||
| google.golang.org/genproto v0.0.0-20190513181449-d00d292a067c/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= | google.golang.org/genproto v0.0.0-20190513181449-d00d292a067c/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= | ||||||
|  | google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= | ||||||
| google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= | google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= | ||||||
| google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= | google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= | ||||||
| google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= | google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= | ||||||
| @@ -1219,6 +1252,7 @@ google.golang.org/genproto v0.0.0-20200323114720-3f67cca34472/go.mod h1:55QSHmfG | |||||||
| google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= | google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= | ||||||
| google.golang.org/genproto v0.0.0-20200409111301-baae70f3302d/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= | google.golang.org/genproto v0.0.0-20200409111301-baae70f3302d/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= | ||||||
| google.golang.org/genproto v0.0.0-20200416231807-8751e049a2a0/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= | google.golang.org/genproto v0.0.0-20200416231807-8751e049a2a0/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= | ||||||
|  | google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= | ||||||
| google.golang.org/genproto v0.0.0-20200519141106-08726f379972/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= | google.golang.org/genproto v0.0.0-20200519141106-08726f379972/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= | ||||||
| google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= | google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= | ||||||
| google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= | google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= | ||||||
| @@ -1226,10 +1260,12 @@ google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmE | |||||||
| google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= | 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.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.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= | ||||||
|  | google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= | ||||||
| google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= | google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= | ||||||
| google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= | google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= | ||||||
| google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= | google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= | ||||||
| google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= | google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= | ||||||
|  | google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= | ||||||
| google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= | google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= | ||||||
| google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= | google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= | ||||||
| google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= | google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= | ||||||
| @@ -1248,22 +1284,19 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi | |||||||
| google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= | google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= | ||||||
| google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= | google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= | ||||||
| google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= | google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= | ||||||
| google.golang.org/protobuf v1.24.0 h1:UhZDfRO8JRQru4/+LlLE0BRKGF8L+PICnvYZmx/fEGA= |  | ||||||
| google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= | google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= | ||||||
| google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= | google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= | ||||||
| google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= | google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= | ||||||
| gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= | gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= | ||||||
| gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= | gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= | ||||||
| gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d h1:TxyelI5cVkbREznMhfzycHdkp5cLA7DpE+GKjSslYhM= |  | ||||||
| gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= | gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= | ||||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||||
| gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||||
| gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= |  | ||||||
| gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||||
| gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= | gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= | ||||||
| gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= | gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= | ||||||
| gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= |  | ||||||
| gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= | gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= | ||||||
|  | gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= | ||||||
| gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= | gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= | ||||||
| gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= | gopkg.in/inf.v0 v0.9.0/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= | ||||||
| gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= | gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= | ||||||
| @@ -1272,7 +1305,6 @@ gopkg.in/ini.v1 v1.42.0 h1:7N3gPTt50s8GuLortA00n8AqRTk75qOP98+mTPpgzRk= | |||||||
| gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= | gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= | ||||||
| gopkg.in/jcmturner/goidentity.v3 v3.0.0 h1:1duIyWiTaYvVx3YX2CYtpJbUFd7/UuPYCfgXtQ3VTbI= | gopkg.in/jcmturner/goidentity.v3 v3.0.0 h1:1duIyWiTaYvVx3YX2CYtpJbUFd7/UuPYCfgXtQ3VTbI= | ||||||
| gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4= | gopkg.in/jcmturner/goidentity.v3 v3.0.0/go.mod h1:oG2kH0IvSYNIu80dVAyu/yoefjq1mNfM5bm88whjWx4= | ||||||
| gopkg.in/ldap.v3 v3.0.3 h1:YKRHW/2sIl05JsCtx/5ZuUueFuJyoj/6+DGXe3wp6ro= |  | ||||||
| gopkg.in/ldap.v3 v3.0.3/go.mod h1:oxD7NyBuxchC+SgJDE1Q5Od05eGt29SDQVBmV+HYbzw= | gopkg.in/ldap.v3 v3.0.3/go.mod h1:oxD7NyBuxchC+SgJDE1Q5Od05eGt29SDQVBmV+HYbzw= | ||||||
| gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce h1:xcEWjVhvbDy+nHP67nPDDpbYrY+ILlfndk4bRioVHaU= | gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce h1:xcEWjVhvbDy+nHP67nPDDpbYrY+ILlfndk4bRioVHaU= | ||||||
| gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= | gopkg.in/mgo.v2 v2.0.0-20180705113604-9856a29383ce/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= | ||||||
| @@ -1284,18 +1316,18 @@ gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76 | |||||||
| gopkg.in/square/go-jose.v2 v2.4.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= | gopkg.in/square/go-jose.v2 v2.4.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= | ||||||
| gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w= | gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w= | ||||||
| gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= | gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= | ||||||
| gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= |  | ||||||
| gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= | gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= | ||||||
|  | gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= | ||||||
| gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= | 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.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
| gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
| gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
| gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
| gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10= |  | ||||||
| gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
|  | gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= | ||||||
|  | gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= | ||||||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||||
| gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo= |  | ||||||
| gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= | gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= | ||||||
| gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= | gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= | ||||||
| honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | ||||||
| @@ -1319,5 +1351,5 @@ layeh.com/radius v0.0.0-20190322222518-890bc1058917/go.mod h1:fywZKyu//X7iRzaxLg | |||||||
| rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= | rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= | ||||||
| rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= | rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= | ||||||
| rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= | rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= | ||||||
| sigs.k8s.io/yaml v1.1.0 h1:4A07+ZFc2wgJwo8YNlQpr1rVlgUDlxXHhPJciaPY5gs= |  | ||||||
| sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= | sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= | ||||||
|  | sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= | ||||||
|   | |||||||
| @@ -1,28 +0,0 @@ | |||||||
| package metricsutil |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestTTLBucket_Lookup(t *testing.T) { |  | ||||||
| 	testCases := []struct { |  | ||||||
| 		Input    time.Duration |  | ||||||
| 		Expected string |  | ||||||
| 	}{ |  | ||||||
| 		{30 * time.Second, "1m"}, |  | ||||||
| 		{0 * time.Second, "1m"}, |  | ||||||
| 		{2 * time.Hour, "2h"}, |  | ||||||
| 		{2*time.Hour - time.Second, "2h"}, |  | ||||||
| 		{2*time.Hour + time.Second, "1d"}, |  | ||||||
| 		{30 * 24 * time.Hour, "30d"}, |  | ||||||
| 		{31 * 24 * time.Hour, "+Inf"}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	for _, tc := range testCases { |  | ||||||
| 		bucket := TTLBucket(tc.Input) |  | ||||||
| 		if bucket != tc.Expected { |  | ||||||
| 			t.Errorf("Expected %q, got %q for duration %v.", tc.Expected, bucket, tc.Input) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @@ -1,551 +0,0 @@ | |||||||
| package metricsutil |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"context" |  | ||||||
| 	"errors" |  | ||||||
| 	"fmt" |  | ||||||
| 	"math/rand" |  | ||||||
| 	"reflect" |  | ||||||
| 	"sync/atomic" |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
|  |  | ||||||
| 	"github.com/armon/go-metrics" |  | ||||||
| 	log "github.com/hashicorp/go-hclog" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| // SimulatedTime maintains a virtual clock so the test isn't |  | ||||||
| // dependent upon real time. |  | ||||||
| // Unfortunately there is no way to run these tests in parallel |  | ||||||
| // since they rely on the same global timeNow function. |  | ||||||
| type SimulatedTime struct { |  | ||||||
| 	now           time.Time |  | ||||||
| 	tickerBarrier chan *SimulatedTicker |  | ||||||
| } |  | ||||||
|  |  | ||||||
| var _ clock = &SimulatedTime{} |  | ||||||
|  |  | ||||||
| type SimulatedTicker struct { |  | ||||||
| 	ticker   *time.Ticker |  | ||||||
| 	duration time.Duration |  | ||||||
| 	sender   chan time.Time |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (s *SimulatedTime) Now() time.Time { |  | ||||||
| 	return s.now |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (s *SimulatedTime) NewTicker(d time.Duration) *time.Ticker { |  | ||||||
| 	// Create a real ticker, but set its duration to an amount that will never fire for real. |  | ||||||
| 	// We'll inject times into the channel directly. |  | ||||||
| 	replacementChannel := make(chan time.Time) |  | ||||||
| 	t := time.NewTicker(1000 * time.Hour) |  | ||||||
| 	t.C = replacementChannel |  | ||||||
| 	s.tickerBarrier <- &SimulatedTicker{t, d, replacementChannel} |  | ||||||
| 	return t |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (s *SimulatedTime) waitForTicker(t *testing.T) *SimulatedTicker { |  | ||||||
| 	t.Helper() |  | ||||||
| 	// System under test should create a ticker within 100ms, |  | ||||||
| 	// wait for it to show up or else fail the test. |  | ||||||
| 	timeout := time.After(100 * time.Millisecond) |  | ||||||
| 	select { |  | ||||||
| 	case <-timeout: |  | ||||||
| 		t.Fatal("Timeout waiting for ticker creation.") |  | ||||||
| 		return nil |  | ||||||
| 	case t := <-s.tickerBarrier: |  | ||||||
| 		return t |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (s *SimulatedTime) allowTickers(n int) { |  | ||||||
| 	s.tickerBarrier = make(chan *SimulatedTicker, n) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func startSimulatedTime() *SimulatedTime { |  | ||||||
| 	s := &SimulatedTime{ |  | ||||||
| 		now:           time.Now(), |  | ||||||
| 		tickerBarrier: make(chan *SimulatedTicker, 1), |  | ||||||
| 	} |  | ||||||
| 	return s |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type SimulatedCollector struct { |  | ||||||
| 	numCalls    uint32 |  | ||||||
| 	callBarrier chan uint32 |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func newSimulatedCollector() *SimulatedCollector { |  | ||||||
| 	return &SimulatedCollector{ |  | ||||||
| 		numCalls:    0, |  | ||||||
| 		callBarrier: make(chan uint32, 1), |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (s *SimulatedCollector) waitForCall(t *testing.T) { |  | ||||||
| 	timeout := time.After(100 * time.Millisecond) |  | ||||||
| 	select { |  | ||||||
| 	case <-timeout: |  | ||||||
| 		t.Fatal("Timeout waiting for call to collection function.") |  | ||||||
| 		return |  | ||||||
| 	case <-s.callBarrier: |  | ||||||
| 		return |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (s *SimulatedCollector) EmptyCollectionFunction(ctx context.Context) ([]GaugeLabelValues, error) { |  | ||||||
| 	atomic.AddUint32(&s.numCalls, 1) |  | ||||||
| 	s.callBarrier <- s.numCalls |  | ||||||
| 	return []GaugeLabelValues{}, nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestGauge_Creation(t *testing.T) { |  | ||||||
| 	c := newSimulatedCollector() |  | ||||||
| 	sink := BlackholeSink() |  | ||||||
| 	sink.GaugeInterval = 33 * time.Minute |  | ||||||
|  |  | ||||||
| 	key := []string{"example", "count"} |  | ||||||
| 	labels := []Label{{"gauge", "test"}} |  | ||||||
|  |  | ||||||
| 	p, err := sink.NewGaugeCollectionProcess( |  | ||||||
| 		key, |  | ||||||
| 		labels, |  | ||||||
| 		c.EmptyCollectionFunction, |  | ||||||
| 		log.Default(), |  | ||||||
| 	) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("Error creating collection process: %v", err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if _, ok := p.clock.(defaultClock); !ok { |  | ||||||
| 		t.Error("Default clock not installed.") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if !reflect.DeepEqual(p.key, key) { |  | ||||||
| 		t.Errorf("Key not initialized, got %v but expected %v", |  | ||||||
| 			p.key, key) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if !reflect.DeepEqual(p.labels, labels) { |  | ||||||
| 		t.Errorf("Labels not initialized, got %v but expected %v", |  | ||||||
| 			p.key, key) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if p.originalInterval != sink.GaugeInterval || p.currentInterval != sink.GaugeInterval { |  | ||||||
| 		t.Errorf("Intervals not initialized, got %v and %v, expected %v", |  | ||||||
| 			p.originalInterval, p.currentInterval, sink.GaugeInterval) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestGauge_StartDelay(t *testing.T) { |  | ||||||
| 	// Work through an entire startup sequence, up to collecting |  | ||||||
| 	// the first batch of gauges. |  | ||||||
| 	s := startSimulatedTime() |  | ||||||
| 	c := newSimulatedCollector() |  | ||||||
|  |  | ||||||
| 	sink := BlackholeSink() |  | ||||||
| 	sink.GaugeInterval = 2 * time.Hour |  | ||||||
|  |  | ||||||
| 	p, err := sink.newGaugeCollectionProcessWithClock( |  | ||||||
| 		[]string{"example", "count"}, |  | ||||||
| 		[]Label{{"gauge", "test"}}, |  | ||||||
| 		c.EmptyCollectionFunction, |  | ||||||
| 		log.Default(), |  | ||||||
| 		s, |  | ||||||
| 	) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("Error creating collection process: %v", err) |  | ||||||
| 	} |  | ||||||
| 	go p.Run() |  | ||||||
|  |  | ||||||
| 	delayTicker := s.waitForTicker(t) |  | ||||||
| 	if delayTicker.duration > sink.GaugeInterval { |  | ||||||
| 		t.Errorf("Delayed start %v is more than interval %v.", |  | ||||||
| 			delayTicker.duration, sink.GaugeInterval) |  | ||||||
| 	} |  | ||||||
| 	if c.numCalls > 0 { |  | ||||||
| 		t.Error("Collection function has been called") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Signal the end of delay, then another ticker should start |  | ||||||
| 	delayTicker.sender <- time.Now() |  | ||||||
|  |  | ||||||
| 	intervalTicker := s.waitForTicker(t) |  | ||||||
| 	if intervalTicker.duration != sink.GaugeInterval { |  | ||||||
| 		t.Errorf("Ticker duration is %v, expected %v", |  | ||||||
| 			intervalTicker.duration, sink.GaugeInterval) |  | ||||||
| 	} |  | ||||||
| 	if c.numCalls > 0 { |  | ||||||
| 		t.Error("Collection function has been called") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Time's up, ensure the collection function is executed. |  | ||||||
| 	intervalTicker.sender <- time.Now() |  | ||||||
| 	c.waitForCall(t) |  | ||||||
| 	if c.numCalls != 1 { |  | ||||||
| 		t.Errorf("Collection function called %v times, expected %v.", c.numCalls, 1) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	p.Stop() |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func waitForStopped(t *testing.T, p *GaugeCollectionProcess) { |  | ||||||
| 	t.Helper() |  | ||||||
| 	timeout := time.After(100 * time.Millisecond) |  | ||||||
| 	select { |  | ||||||
| 	case <-timeout: |  | ||||||
| 		t.Fatal("Timeout waiting for process to stop.") |  | ||||||
| 	case <-p.stopped: |  | ||||||
| 		return |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestGauge_StoppedDuringInitialDelay(t *testing.T) { |  | ||||||
| 	// Stop the process before it gets into its main loop |  | ||||||
| 	s := startSimulatedTime() |  | ||||||
| 	c := newSimulatedCollector() |  | ||||||
|  |  | ||||||
| 	sink := BlackholeSink() |  | ||||||
| 	sink.GaugeInterval = 2 * time.Hour |  | ||||||
|  |  | ||||||
| 	p, err := sink.newGaugeCollectionProcessWithClock( |  | ||||||
| 		[]string{"example", "count"}, |  | ||||||
| 		[]Label{{"gauge", "test"}}, |  | ||||||
| 		c.EmptyCollectionFunction, |  | ||||||
| 		log.Default(), |  | ||||||
| 		s, |  | ||||||
| 	) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("Error creating collection process: %v", err) |  | ||||||
| 	} |  | ||||||
| 	go p.Run() |  | ||||||
|  |  | ||||||
| 	// Stop during the initial delay, check that goroutine exits |  | ||||||
| 	s.waitForTicker(t) |  | ||||||
| 	p.Stop() |  | ||||||
| 	waitForStopped(t, p) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestGauge_StoppedAfterInitialDelay(t *testing.T) { |  | ||||||
| 	// Stop the process during its main loop |  | ||||||
| 	s := startSimulatedTime() |  | ||||||
| 	c := newSimulatedCollector() |  | ||||||
|  |  | ||||||
| 	sink := BlackholeSink() |  | ||||||
| 	sink.GaugeInterval = 2 * time.Hour |  | ||||||
|  |  | ||||||
| 	p, err := sink.newGaugeCollectionProcessWithClock( |  | ||||||
| 		[]string{"example", "count"}, |  | ||||||
| 		[]Label{{"gauge", "test"}}, |  | ||||||
| 		c.EmptyCollectionFunction, |  | ||||||
| 		log.Default(), |  | ||||||
| 		s, |  | ||||||
| 	) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("Error creating collection process: %v", err) |  | ||||||
| 	} |  | ||||||
| 	go p.Run() |  | ||||||
|  |  | ||||||
| 	// Get through initial delay, wait for interval ticker |  | ||||||
| 	delayTicker := s.waitForTicker(t) |  | ||||||
| 	delayTicker.sender <- time.Now() |  | ||||||
|  |  | ||||||
| 	s.waitForTicker(t) |  | ||||||
| 	p.Stop() |  | ||||||
| 	waitForStopped(t, p) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestGauge_Backoff(t *testing.T) { |  | ||||||
| 	s := startSimulatedTime() |  | ||||||
| 	s.allowTickers(100) |  | ||||||
|  |  | ||||||
| 	c := newSimulatedCollector() |  | ||||||
|  |  | ||||||
| 	sink := BlackholeSink() |  | ||||||
| 	sink.GaugeInterval = 2 * time.Hour |  | ||||||
|  |  | ||||||
| 	threshold := time.Duration(int(sink.GaugeInterval) / 100) |  | ||||||
| 	f := func(ctx context.Context) ([]GaugeLabelValues, error) { |  | ||||||
| 		atomic.AddUint32(&c.numCalls, 1) |  | ||||||
| 		// Move time forward by more than 1% of the gauge interval |  | ||||||
| 		s.now = s.now.Add(threshold).Add(time.Second) |  | ||||||
| 		c.callBarrier <- c.numCalls |  | ||||||
| 		return []GaugeLabelValues{}, nil |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	p, err := sink.newGaugeCollectionProcessWithClock( |  | ||||||
| 		[]string{"example", "count"}, |  | ||||||
| 		[]Label{{"gauge", "test"}}, |  | ||||||
| 		f, |  | ||||||
| 		log.Default(), |  | ||||||
| 		s, |  | ||||||
| 	) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("Error creating collection process: %v", err) |  | ||||||
| 	} |  | ||||||
| 	// Do not run, we'll just going to call an internal function. |  | ||||||
| 	p.collectAndFilterGauges() |  | ||||||
|  |  | ||||||
| 	if p.currentInterval != 2*p.originalInterval { |  | ||||||
| 		t.Errorf("Current interval is %v, should be 2x%v.", |  | ||||||
| 			p.currentInterval, |  | ||||||
| 			p.originalInterval) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestGauge_RestartTimer(t *testing.T) { |  | ||||||
| 	s := startSimulatedTime() |  | ||||||
| 	c := newSimulatedCollector() |  | ||||||
| 	sink := BlackholeSink() |  | ||||||
| 	sink.GaugeInterval = 2 * time.Hour |  | ||||||
|  |  | ||||||
| 	p, err := sink.newGaugeCollectionProcessWithClock( |  | ||||||
| 		[]string{"example", "count"}, |  | ||||||
| 		[]Label{{"gauge", "test"}}, |  | ||||||
| 		c.EmptyCollectionFunction, |  | ||||||
| 		log.Default(), |  | ||||||
| 		s, |  | ||||||
| 	) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("Error creating collection process: %v", err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	p.resetTicker() |  | ||||||
| 	t1 := s.waitForTicker(t) |  | ||||||
| 	if t1.duration != p.currentInterval { |  | ||||||
| 		t.Fatalf("Bad ticker interval, got %v expected %v", |  | ||||||
| 			t1.duration, p.currentInterval) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	p.currentInterval = 4 * p.originalInterval |  | ||||||
| 	p.resetTicker() |  | ||||||
| 	t2 := s.waitForTicker(t) |  | ||||||
| 	if t2.duration != p.currentInterval { |  | ||||||
| 		t.Fatalf("Bad ticker interval, got %v expected %v", |  | ||||||
| 			t1.duration, p.currentInterval) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func waitForDone(t *testing.T, |  | ||||||
| 	tick chan<- time.Time, |  | ||||||
| 	done <-chan struct{}, |  | ||||||
| ) int { |  | ||||||
| 	t.Helper() |  | ||||||
| 	timeout := time.After(100 * time.Millisecond) |  | ||||||
|  |  | ||||||
| 	numTicks := 0 |  | ||||||
| 	for { |  | ||||||
| 		select { |  | ||||||
| 		case <-timeout: |  | ||||||
| 			t.Fatal("Timeout waiting for metrics to be sent.") |  | ||||||
| 		case tick <- time.Now(): |  | ||||||
| 			numTicks += 1 |  | ||||||
| 		case <-done: |  | ||||||
| 			return numTicks |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func makeLabels(numLabels int) []GaugeLabelValues { |  | ||||||
| 	values := make([]GaugeLabelValues, numLabels) |  | ||||||
| 	for i := range values { |  | ||||||
| 		values[i].Labels = []Label{ |  | ||||||
| 			{"test", "true"}, |  | ||||||
| 			{"which", fmt.Sprintf("%v", i)}, |  | ||||||
| 		} |  | ||||||
| 		values[i].Value = float32(i + 1) |  | ||||||
| 	} |  | ||||||
| 	return values |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestGauge_InterruptedStreaming(t *testing.T) { |  | ||||||
| 	s := startSimulatedTime() |  | ||||||
| 	// Long bucket time == low chance of crossing interval |  | ||||||
| 	inmemSink := metrics.NewInmemSink( |  | ||||||
| 		1000000*time.Hour, |  | ||||||
| 		2000000*time.Hour) |  | ||||||
|  |  | ||||||
| 	sink := NewClusterMetricSink("test", inmemSink) |  | ||||||
| 	sink.MaxGaugeCardinality = 500 |  | ||||||
| 	sink.GaugeInterval = 2 * time.Hour |  | ||||||
|  |  | ||||||
| 	p, err := sink.newGaugeCollectionProcessWithClock( |  | ||||||
| 		[]string{"example", "count"}, |  | ||||||
| 		[]Label{{"gauge", "test"}}, |  | ||||||
| 		nil, // shouldn't be called |  | ||||||
| 		log.Default(), |  | ||||||
| 		s, |  | ||||||
| 	) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("Error creating collection process: %v", err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// We'll queue up at least two batches; only one will be sent |  | ||||||
| 	// unless we give a ticker. |  | ||||||
| 	values := makeLabels(75) |  | ||||||
| 	done := make(chan struct{}) |  | ||||||
| 	go func() { |  | ||||||
| 		p.streamGaugesToSink(values) |  | ||||||
| 		close(done) |  | ||||||
| 	}() |  | ||||||
|  |  | ||||||
| 	p.Stop() |  | ||||||
| 	// a nil channel is never writeable |  | ||||||
| 	waitForDone(t, nil, done) |  | ||||||
|  |  | ||||||
| 	// If we start close to the end of an interval, metrics will |  | ||||||
| 	// be split across two buckets. |  | ||||||
| 	intervals := inmemSink.Data() |  | ||||||
| 	if len(intervals) > 1 { |  | ||||||
| 		t.Skip("Detected interval crossing.") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if len(intervals[0].Gauges) == len(values) { |  | ||||||
| 		t.Errorf("Found %v gauges, expected fewer.", |  | ||||||
| 			len(intervals[0].Gauges)) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // helper function to create a closure that's a GaugeCollector. |  | ||||||
| func (c *SimulatedCollector) makeFunctionForValues( |  | ||||||
| 	values []GaugeLabelValues, |  | ||||||
| 	s *SimulatedTime, |  | ||||||
| 	advanceTime time.Duration, |  | ||||||
| ) GaugeCollector { |  | ||||||
| 	// A function that returns a static list |  | ||||||
| 	return func(ctx context.Context) ([]GaugeLabelValues, error) { |  | ||||||
| 		atomic.AddUint32(&c.numCalls, 1) |  | ||||||
| 		// TODO: this seems like a data race? |  | ||||||
| 		s.now = s.now.Add(advanceTime) |  | ||||||
| 		c.callBarrier <- c.numCalls |  | ||||||
| 		return values, nil |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestGauge_MaximumMeasurements(t *testing.T) { |  | ||||||
| 	s := startSimulatedTime() |  | ||||||
| 	c := newSimulatedCollector() |  | ||||||
|  |  | ||||||
| 	// Long bucket time == low chance of crossing interval |  | ||||||
| 	inmemSink := metrics.NewInmemSink( |  | ||||||
| 		1000000*time.Hour, |  | ||||||
| 		2000000*time.Hour) |  | ||||||
|  |  | ||||||
| 	sink := NewClusterMetricSink("test", inmemSink) |  | ||||||
| 	sink.MaxGaugeCardinality = 500 |  | ||||||
| 	sink.GaugeInterval = 2 * time.Hour |  | ||||||
|  |  | ||||||
| 	// Create a report larger than the default limit |  | ||||||
| 	excessGauges := 100 |  | ||||||
| 	values := makeLabels(sink.MaxGaugeCardinality + excessGauges) |  | ||||||
| 	rand.Shuffle(len(values), func(i, j int) { |  | ||||||
| 		values[i], values[j] = values[j], values[i] |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| 	// Advance time by 0.5% of duration |  | ||||||
| 	advance := time.Duration(int(0.005 * float32(sink.GaugeInterval))) |  | ||||||
| 	p, err := sink.newGaugeCollectionProcessWithClock( |  | ||||||
| 		[]string{"example", "count"}, |  | ||||||
| 		[]Label{{"gauge", "test"}}, |  | ||||||
| 		c.makeFunctionForValues(values, s, advance), |  | ||||||
| 		log.Default(), |  | ||||||
| 		s, |  | ||||||
| 	) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("Error creating collection process: %v", err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// This needs a ticker in order to do its thing, |  | ||||||
| 	// so run it in the background and we'll send the ticks |  | ||||||
| 	// from here. |  | ||||||
| 	done := make(chan struct{}, 1) |  | ||||||
| 	go func() { |  | ||||||
| 		p.collectAndFilterGauges() |  | ||||||
| 		close(done) |  | ||||||
| 	}() |  | ||||||
|  |  | ||||||
| 	sendTicker := s.waitForTicker(t) |  | ||||||
| 	numTicksSent := waitForDone(t, sendTicker.sender, done) |  | ||||||
|  |  | ||||||
| 	// 500 items, one delay after after each 25, means that |  | ||||||
| 	// 19 ticks are consumed, so 19 or 20 must be sent. |  | ||||||
| 	expectedTicks := sink.MaxGaugeCardinality/25 - 1 |  | ||||||
| 	if numTicksSent < expectedTicks || numTicksSent > expectedTicks+1 { |  | ||||||
| 		t.Errorf("Number of ticks = %v, expected %v.", numTicksSent, expectedTicks) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// If we start close to the end of an interval, metrics will |  | ||||||
| 	// be split across two buckets. |  | ||||||
| 	intervals := inmemSink.Data() |  | ||||||
| 	if len(intervals) > 1 { |  | ||||||
| 		t.Skip("Detected interval crossing.") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if len(intervals[0].Gauges) != sink.MaxGaugeCardinality { |  | ||||||
| 		t.Errorf("Found %v gauges, expected %v.", |  | ||||||
| 			len(intervals[0].Gauges), |  | ||||||
| 			sink.MaxGaugeCardinality) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	minVal := float32(excessGauges) |  | ||||||
| 	for _, v := range intervals[0].Gauges { |  | ||||||
| 		if v.Value < minVal { |  | ||||||
| 			t.Errorf("Gauge %v with value %v should not have been included.", v.Labels, v.Value) |  | ||||||
| 			break |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestGauge_MeasurementError(t *testing.T) { |  | ||||||
| 	s := startSimulatedTime() |  | ||||||
| 	c := newSimulatedCollector() |  | ||||||
| 	inmemSink := metrics.NewInmemSink( |  | ||||||
| 		1000000*time.Hour, |  | ||||||
| 		2000000*time.Hour) |  | ||||||
| 	sink := NewClusterMetricSink("test", inmemSink) |  | ||||||
| 	sink.MaxGaugeCardinality = 500 |  | ||||||
| 	sink.GaugeInterval = 2 * time.Hour |  | ||||||
|  |  | ||||||
| 	// Create a small report so we don't have to deal with batching. |  | ||||||
| 	numGauges := 10 |  | ||||||
| 	values := make([]GaugeLabelValues, numGauges) |  | ||||||
| 	for i := range values { |  | ||||||
| 		values[i].Labels = []Label{ |  | ||||||
| 			{"test", "true"}, |  | ||||||
| 			{"which", fmt.Sprintf("%v", i)}, |  | ||||||
| 		} |  | ||||||
| 		values[i].Value = float32(i + 1) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	f := func(ctx context.Context) ([]GaugeLabelValues, error) { |  | ||||||
| 		atomic.AddUint32(&c.numCalls, 1) |  | ||||||
| 		c.callBarrier <- c.numCalls |  | ||||||
| 		return values, errors.New("test error") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	p, err := sink.newGaugeCollectionProcessWithClock( |  | ||||||
| 		[]string{"example", "count"}, |  | ||||||
| 		[]Label{{"gauge", "test"}}, |  | ||||||
| 		f, |  | ||||||
| 		log.Default(), |  | ||||||
| 		s, |  | ||||||
| 	) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("Error creating collection process: %v", err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	p.collectAndFilterGauges() |  | ||||||
|  |  | ||||||
| 	// We should see no data in the sink |  | ||||||
| 	intervals := inmemSink.Data() |  | ||||||
| 	if len(intervals) > 1 { |  | ||||||
| 		t.Skip("Detected interval crossing.") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if len(intervals[0].Gauges) != 0 { |  | ||||||
| 		t.Errorf("Found %v gauges, expected %v.", |  | ||||||
| 			len(intervals[0].Gauges), 0) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @@ -1,46 +0,0 @@ | |||||||
| package metricsutil |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/hashicorp/vault/sdk/logical" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestFormatFromRequest(t *testing.T) { |  | ||||||
| 	testCases := []struct { |  | ||||||
| 		original *logical.Request |  | ||||||
| 		expected string |  | ||||||
| 	}{ |  | ||||||
| 		{ |  | ||||||
| 			original: &logical.Request{Headers: map[string][]string{ |  | ||||||
| 				"Accept": { |  | ||||||
| 					"application/vnd.google.protobuf", |  | ||||||
| 					"schema=\"prometheus/telemetry\"", |  | ||||||
| 				}, |  | ||||||
| 			}}, |  | ||||||
| 			expected: "prometheus", |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			original: &logical.Request{Headers: map[string][]string{ |  | ||||||
| 				"Accept": { |  | ||||||
| 					"schema=\"prometheus\"", |  | ||||||
| 				}, |  | ||||||
| 			}}, |  | ||||||
| 			expected: "", |  | ||||||
| 		}, |  | ||||||
| 		{ |  | ||||||
| 			original: &logical.Request{Headers: map[string][]string{ |  | ||||||
| 				"Accept": { |  | ||||||
| 					"application/openmetrics-text", |  | ||||||
| 				}, |  | ||||||
| 			}}, |  | ||||||
| 			expected: "prometheus", |  | ||||||
| 		}, |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	for _, tCase := range testCases { |  | ||||||
| 		if metricsType := FormatFromRequest(tCase.original); metricsType != tCase.expected { |  | ||||||
| 			t.Fatalf("expected %s but got %s", tCase.expected, metricsType) |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @@ -2,94 +2,11 @@ package metricsutil | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"strings" | 	"strings" | ||||||
| 	"sync/atomic" |  | ||||||
| 	"time" |  | ||||||
|  |  | ||||||
| 	metrics "github.com/armon/go-metrics" | 	metrics "github.com/armon/go-metrics" | ||||||
| 	"github.com/hashicorp/vault/helper/namespace" | 	"github.com/hashicorp/vault/helper/namespace" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // ClusterMetricSink serves as a shim around go-metrics |  | ||||||
| // and inserts a "cluster" label. |  | ||||||
| // |  | ||||||
| // It also provides a mechanism to limit the cardinality of the labels on a gauge |  | ||||||
| // (at each reporting interval, which isn't sufficient if there is variability in which |  | ||||||
| // labels are the top N) and a backoff mechanism for gauge computation. |  | ||||||
| type ClusterMetricSink struct { |  | ||||||
| 	// ClusterName is either the cluster ID, or a name provided |  | ||||||
| 	// in the telemetry configuration stanza. |  | ||||||
| 	// |  | ||||||
| 	// Because it may be set after the Core is initialized, we need |  | ||||||
| 	// to protect against concurrent access. |  | ||||||
| 	ClusterName atomic.Value |  | ||||||
|  |  | ||||||
| 	MaxGaugeCardinality int |  | ||||||
| 	GaugeInterval       time.Duration |  | ||||||
|  |  | ||||||
| 	// Sink is the go-metrics instance to send to. |  | ||||||
| 	Sink metrics.MetricSink |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // Convenience alias |  | ||||||
| type Label = metrics.Label |  | ||||||
|  |  | ||||||
| func (m *ClusterMetricSink) SetGaugeWithLabels(key []string, val float32, labels []Label) { |  | ||||||
| 	m.Sink.SetGaugeWithLabels(key, val, |  | ||||||
| 		append(labels, Label{"cluster", m.ClusterName.Load().(string)})) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *ClusterMetricSink) IncrCounterWithLabels(key []string, val float32, labels []Label) { |  | ||||||
| 	m.Sink.IncrCounterWithLabels(key, val, |  | ||||||
| 		append(labels, Label{"cluster", m.ClusterName.Load().(string)})) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *ClusterMetricSink) AddSampleWithLabels(key []string, val float32, labels []Label) { |  | ||||||
| 	m.Sink.AddSampleWithLabels(key, val, |  | ||||||
| 		append(labels, Label{"cluster", m.ClusterName.Load().(string)})) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *ClusterMetricSink) AddDurationWithLabels(key []string, d time.Duration, labels []Label) { |  | ||||||
| 	val := float32(d) / float32(time.Millisecond) |  | ||||||
| 	m.AddSampleWithLabels(key, val, labels) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func (m *ClusterMetricSink) MeasureSinceWithLabels(key []string, start time.Time, labels []Label) { |  | ||||||
| 	elapsed := time.Now().Sub(start) |  | ||||||
| 	val := float32(elapsed) / float32(time.Millisecond) |  | ||||||
| 	m.AddSampleWithLabels(key, val, labels) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // BlackholeSink is a default suitable for use in unit tests. |  | ||||||
| func BlackholeSink() *ClusterMetricSink { |  | ||||||
| 	sink, _ := metrics.New(metrics.DefaultConfig(""), |  | ||||||
| 		&metrics.BlackholeSink{}) |  | ||||||
| 	cms := &ClusterMetricSink{ |  | ||||||
| 		ClusterName: atomic.Value{}, |  | ||||||
| 		Sink:        sink, |  | ||||||
| 	} |  | ||||||
| 	cms.ClusterName.Store("") |  | ||||||
| 	return cms |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func NewClusterMetricSink(clusterName string, sink metrics.MetricSink) *ClusterMetricSink { |  | ||||||
| 	cms := &ClusterMetricSink{ |  | ||||||
| 		ClusterName: atomic.Value{}, |  | ||||||
| 		Sink:        sink, |  | ||||||
| 	} |  | ||||||
| 	cms.ClusterName.Store(clusterName) |  | ||||||
| 	return cms |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // SetDefaultClusterName changes the cluster name from its default value, |  | ||||||
| // if it has not previously been configured. |  | ||||||
| func (m *ClusterMetricSink) SetDefaultClusterName(clusterName string) { |  | ||||||
| 	// This is not a true compare-and-swap, but it should be |  | ||||||
| 	// consistent enough for normal uses |  | ||||||
| 	if m.ClusterName.Load().(string) == "" { |  | ||||||
| 		m.ClusterName.Store(clusterName) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // NamespaceLabel creates a metrics label for the given | // NamespaceLabel creates a metrics label for the given | ||||||
| // Namespace: root is "root"; others are path with the | // Namespace: root is "root"; others are path with the | ||||||
| // final '/' removed. | // final '/' removed. | ||||||
|   | |||||||
| @@ -1,111 +0,0 @@ | |||||||
| package metricsutil |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"testing" |  | ||||||
| 	"time" |  | ||||||
|  |  | ||||||
| 	"github.com/armon/go-metrics" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func isLabelPresent(toFind Label, ls []Label) bool { |  | ||||||
| 	for _, l := range ls { |  | ||||||
| 		if l == toFind { |  | ||||||
| 			return true |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	return false |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // We can use a sink directly, or wrap the top-level |  | ||||||
| // go-metrics implementation for testing purposes. |  | ||||||
| func defaultMetrics(sink metrics.MetricSink) *metrics.Metrics { |  | ||||||
| 	// No service name |  | ||||||
| 	config := metrics.DefaultConfig("") |  | ||||||
|  |  | ||||||
| 	// No host name |  | ||||||
| 	config.EnableHostname = false |  | ||||||
| 	m, _ := metrics.New(config, sink) |  | ||||||
| 	return m |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestClusterLabelPresent(t *testing.T) { |  | ||||||
| 	testClusterName := "test-cluster" |  | ||||||
|  |  | ||||||
| 	// Use a ridiculously long time to minimize the chance |  | ||||||
| 	// that we have to deal with more than one interval. |  | ||||||
| 	// InMemSink rounds down to an interval boundary rather than |  | ||||||
| 	// starting one at the time of initialization. |  | ||||||
| 	inmemSink := metrics.NewInmemSink( |  | ||||||
| 		1000000*time.Hour, |  | ||||||
| 		2000000*time.Hour) |  | ||||||
| 	clusterSink := NewClusterMetricSink(testClusterName, defaultMetrics(inmemSink)) |  | ||||||
|  |  | ||||||
| 	key1 := []string{"aaa", "bbb"} |  | ||||||
| 	key2 := []string{"ccc", "ddd"} |  | ||||||
| 	key3 := []string{"eee", "fff"} |  | ||||||
| 	labels1 := []Label{{"dim1", "val1"}} |  | ||||||
| 	labels2 := []Label{{"dim2", "val2"}} |  | ||||||
| 	labels3 := []Label{{"dim3", "val3"}} |  | ||||||
| 	clusterLabel := Label{"cluster", testClusterName} |  | ||||||
| 	expectedKey1 := "aaa.bbb;dim1=val1;cluster=" + testClusterName |  | ||||||
| 	expectedKey2 := "ccc.ddd;dim2=val2;cluster=" + testClusterName |  | ||||||
| 	expectedKey3 := "eee.fff;dim3=val3;cluster=" + testClusterName |  | ||||||
|  |  | ||||||
| 	clusterSink.SetGaugeWithLabels(key1, 1.0, labels1) |  | ||||||
| 	clusterSink.IncrCounterWithLabels(key2, 2.0, labels2) |  | ||||||
| 	clusterSink.AddSampleWithLabels(key3, 3.0, labels3) |  | ||||||
|  |  | ||||||
| 	intervals := inmemSink.Data() |  | ||||||
| 	// If we start very close to the end of an interval, then our metrics might be |  | ||||||
| 	// split across two different buckets. We won't write the code to try to handle that. |  | ||||||
| 	// 100000-hours = at most once every 4167 days |  | ||||||
| 	if len(intervals) > 1 { |  | ||||||
| 		t.Skip("Detected interval crossing.") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Check Gauge |  | ||||||
| 	g, ok := intervals[0].Gauges[expectedKey1] |  | ||||||
| 	if !ok { |  | ||||||
| 		t.Fatal("Key", expectedKey1, "not found in map", intervals[0].Gauges) |  | ||||||
| 	} |  | ||||||
| 	if g.Value != 1.0 { |  | ||||||
| 		t.Error("Gauge value", g.Value, "does not match", 1.0) |  | ||||||
| 	} |  | ||||||
| 	if !isLabelPresent(labels1[0], g.Labels) { |  | ||||||
| 		t.Error("Gauge label", g.Labels, "does not include", labels1) |  | ||||||
| 	} |  | ||||||
| 	if !isLabelPresent(clusterLabel, g.Labels) { |  | ||||||
| 		t.Error("Gauge label", g.Labels, "does not include", clusterLabel) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Check Counter |  | ||||||
| 	c, ok := intervals[0].Counters[expectedKey2] |  | ||||||
| 	if !ok { |  | ||||||
| 		t.Fatal("Key", expectedKey2, "not found in map", intervals[0].Counters) |  | ||||||
| 	} |  | ||||||
| 	if c.Sum != 2.0 { |  | ||||||
| 		t.Error("Counter value", c.Sum, "does not match", 2.0) |  | ||||||
| 	} |  | ||||||
| 	if !isLabelPresent(labels2[0], c.Labels) { |  | ||||||
| 		t.Error("Counter label", c.Labels, "does not include", labels2) |  | ||||||
| 	} |  | ||||||
| 	if !isLabelPresent(clusterLabel, c.Labels) { |  | ||||||
| 		t.Error("Counter label", c.Labels, "does not include", clusterLabel) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// Check Sample |  | ||||||
| 	s, ok := intervals[0].Samples[expectedKey3] |  | ||||||
| 	if !ok { |  | ||||||
| 		t.Fatal("Key", expectedKey3, "not found in map", intervals[0].Samples) |  | ||||||
| 	} |  | ||||||
| 	if s.Sum != 3.0 { |  | ||||||
| 		t.Error("Sample value", s.Sum, "does not match", 3.0) |  | ||||||
| 	} |  | ||||||
| 	if !isLabelPresent(labels3[0], s.Labels) { |  | ||||||
| 		t.Error("Sample label", s.Labels, "does not include", labels3) |  | ||||||
| 	} |  | ||||||
| 	if !isLabelPresent(clusterLabel, s.Labels) { |  | ||||||
| 		t.Error("Sample label", s.Labels, "does not include", clusterLabel) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @@ -4,11 +4,11 @@ import ( | |||||||
| 	"path" | 	"path" | ||||||
|  |  | ||||||
| 	"github.com/hashicorp/go-hclog" | 	"github.com/hashicorp/go-hclog" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/configutil" | ||||||
| 	"github.com/hashicorp/vault/api" | 	"github.com/hashicorp/vault/api" | ||||||
| 	"github.com/hashicorp/vault/builtin/logical/transit" | 	"github.com/hashicorp/vault/builtin/logical/transit" | ||||||
| 	"github.com/hashicorp/vault/helper/testhelpers/teststorage" | 	"github.com/hashicorp/vault/helper/testhelpers/teststorage" | ||||||
| 	"github.com/hashicorp/vault/http" | 	"github.com/hashicorp/vault/http" | ||||||
| 	"github.com/hashicorp/vault/internalshared/configutil" |  | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/logging" | 	"github.com/hashicorp/vault/sdk/helper/logging" | ||||||
| 	"github.com/hashicorp/vault/sdk/logical" | 	"github.com/hashicorp/vault/sdk/logical" | ||||||
| 	"github.com/hashicorp/vault/vault" | 	"github.com/hashicorp/vault/vault" | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ import ( | |||||||
| 	"testing" | 	"testing" | ||||||
|  |  | ||||||
| 	sockaddr "github.com/hashicorp/go-sockaddr" | 	sockaddr "github.com/hashicorp/go-sockaddr" | ||||||
| 	"github.com/hashicorp/vault/internalshared/configutil" | 	"github.com/hashicorp/shared-secure-libs/configutil" | ||||||
| 	"github.com/hashicorp/vault/vault" | 	"github.com/hashicorp/vault/vault" | ||||||
| ) | ) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -22,8 +22,8 @@ import ( | |||||||
| 	"github.com/hashicorp/errwrap" | 	"github.com/hashicorp/errwrap" | ||||||
| 	cleanhttp "github.com/hashicorp/go-cleanhttp" | 	cleanhttp "github.com/hashicorp/go-cleanhttp" | ||||||
| 	sockaddr "github.com/hashicorp/go-sockaddr" | 	sockaddr "github.com/hashicorp/go-sockaddr" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/configutil" | ||||||
| 	"github.com/hashicorp/vault/helper/namespace" | 	"github.com/hashicorp/vault/helper/namespace" | ||||||
| 	"github.com/hashicorp/vault/internalshared/configutil" |  | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/consts" | 	"github.com/hashicorp/vault/sdk/helper/consts" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/jsonutil" | 	"github.com/hashicorp/vault/sdk/helper/jsonutil" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/parseutil" | 	"github.com/hashicorp/vault/sdk/helper/parseutil" | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ import ( | |||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"net/http" | 	"net/http" | ||||||
|  |  | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" | 	"github.com/hashicorp/shared-secure-libs/metricsutil" | ||||||
| 	"github.com/hashicorp/vault/sdk/logical" | 	"github.com/hashicorp/vault/sdk/logical" | ||||||
| 	"github.com/hashicorp/vault/vault" | 	"github.com/hashicorp/vault/vault" | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -5,8 +5,8 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/armon/go-metrics" | 	"github.com/armon/go-metrics" | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" | 	"github.com/hashicorp/shared-secure-libs/configutil" | ||||||
| 	"github.com/hashicorp/vault/internalshared/configutil" | 	"github.com/hashicorp/shared-secure-libs/metricsutil" | ||||||
| 	"github.com/hashicorp/vault/vault" | 	"github.com/hashicorp/vault/vault" | ||||||
| ) | ) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,14 +0,0 @@ | |||||||
| HashiCorp-internal libs |  | ||||||
| ================= |  | ||||||
|  |  | ||||||
| Do not use these unless you know what you're doing. |  | ||||||
|  |  | ||||||
| These libraries are used by other HashiCorp software to reduce code duplication |  | ||||||
| and increase consistency. They are not libraries needed by Vault plugins -- |  | ||||||
| those are in the sdk/ module. |  | ||||||
|  |  | ||||||
| There are no compatibility guarantees. Things in here may change or move or |  | ||||||
| disappear at any time. |  | ||||||
|  |  | ||||||
| If you are a Vault plugin author and think you need a library in here in your |  | ||||||
| plugin, please open an issue for discussion. |  | ||||||
| @@ -1,111 +0,0 @@ | |||||||
| package configutil |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"bytes" |  | ||||||
| 	"context" |  | ||||||
| 	"encoding/base64" |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	wrapping "github.com/hashicorp/go-kms-wrapping" |  | ||||||
| 	"google.golang.org/protobuf/proto" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func getAEADTestKMS(t *testing.T) { |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestEncryptParams(t *testing.T) { |  | ||||||
| 	rawStr := ` |  | ||||||
| storage "consul" { |  | ||||||
| 	api_key = "{{encrypt(foobar)}}" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| telemetry { |  | ||||||
| 	some_param = "something" |  | ||||||
| 	circonus_api_key = "{{encrypt(barfoo)}}" |  | ||||||
| } |  | ||||||
| ` |  | ||||||
|  |  | ||||||
| 	finalStr := ` |  | ||||||
| storage "consul" { |  | ||||||
| 	api_key = "foobar" |  | ||||||
| } |  | ||||||
|  |  | ||||||
| telemetry { |  | ||||||
| 	some_param = "something" |  | ||||||
| 	circonus_api_key = "barfoo" |  | ||||||
| } |  | ||||||
| ` |  | ||||||
|  |  | ||||||
| 	reverser := new(reversingWrapper) |  | ||||||
| 	out, err := EncryptDecrypt(rawStr, false, false, reverser) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	first := true |  | ||||||
| 	locs := decryptRegex.FindAllIndex([]byte(out), -1) |  | ||||||
| 	for _, match := range locs { |  | ||||||
| 		matchBytes := []byte(out)[match[0]:match[1]] |  | ||||||
| 		matchBytes = bytes.TrimSuffix(bytes.TrimPrefix(matchBytes, []byte("{{decrypt(")), []byte(")}}")) |  | ||||||
| 		inMsg, err := base64.RawURLEncoding.DecodeString(string(matchBytes)) |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatal(err) |  | ||||||
| 		} |  | ||||||
| 		inBlob := new(wrapping.EncryptedBlobInfo) |  | ||||||
| 		if err := proto.Unmarshal(inMsg, inBlob); err != nil { |  | ||||||
| 			t.Fatal(err) |  | ||||||
| 		} |  | ||||||
| 		ct := string(inBlob.Ciphertext) |  | ||||||
| 		if first { |  | ||||||
| 			if ct != "raboof" { |  | ||||||
| 				t.Fatal(ct) |  | ||||||
| 			} |  | ||||||
| 			first = false |  | ||||||
| 		} else { |  | ||||||
| 			if ct != "oofrab" { |  | ||||||
| 				t.Fatal(ct) |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	decOut, err := EncryptDecrypt(out, true, false, reverser) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if decOut != rawStr { |  | ||||||
| 		t.Fatal(decOut) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	decOut, err = EncryptDecrypt(out, true, true, reverser) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatal(err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if decOut != finalStr { |  | ||||||
| 		t.Fatal(decOut) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| type reversingWrapper struct{} |  | ||||||
|  |  | ||||||
| func (r *reversingWrapper) Type() string                     { return "reversing" } |  | ||||||
| func (r *reversingWrapper) KeyID() string                    { return "reverser" } |  | ||||||
| func (r *reversingWrapper) HMACKeyID() string                { return "" } |  | ||||||
| func (r *reversingWrapper) Init(_ context.Context) error     { return nil } |  | ||||||
| func (r *reversingWrapper) Finalize(_ context.Context) error { return nil } |  | ||||||
| func (r *reversingWrapper) Encrypt(_ context.Context, input []byte, _ []byte) (*wrapping.EncryptedBlobInfo, error) { |  | ||||||
| 	return &wrapping.EncryptedBlobInfo{ |  | ||||||
| 		Ciphertext: r.reverse(input), |  | ||||||
| 	}, nil |  | ||||||
| } |  | ||||||
| func (r *reversingWrapper) Decrypt(_ context.Context, input *wrapping.EncryptedBlobInfo, _ []byte) ([]byte, error) { |  | ||||||
| 	return r.reverse(input.Ciphertext), nil |  | ||||||
| } |  | ||||||
| func (r *reversingWrapper) reverse(input []byte) []byte { |  | ||||||
| 	output := make([]byte, len(input)) |  | ||||||
| 	for i, j := 0, len(input)-1; i < j; i, j = i+1, j-1 { |  | ||||||
| 		output[i], output[j] = input[j], input[i] |  | ||||||
| 	} |  | ||||||
| 	return output |  | ||||||
| } |  | ||||||
| @@ -1,34 +0,0 @@ | |||||||
| package gatedwriter |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"bytes" |  | ||||||
| 	"io" |  | ||||||
| 	"testing" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestWriter_impl(t *testing.T) { |  | ||||||
| 	var _ io.Writer = new(Writer) |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestWriter(t *testing.T) { |  | ||||||
| 	buf := new(bytes.Buffer) |  | ||||||
| 	w := NewWriter(buf) |  | ||||||
| 	w.Write([]byte("foo\n")) |  | ||||||
| 	w.Write([]byte("bar\n")) |  | ||||||
|  |  | ||||||
| 	if buf.String() != "" { |  | ||||||
| 		t.Fatalf("bad: %s", buf.String()) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	w.Flush() |  | ||||||
|  |  | ||||||
| 	if buf.String() != "foo\nbar\n" { |  | ||||||
| 		t.Fatalf("bad: %s", buf.String()) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	w.Write([]byte("baz\n")) |  | ||||||
|  |  | ||||||
| 	if buf.String() != "foo\nbar\nbaz\n" { |  | ||||||
| 		t.Fatalf("bad: %s", buf.String()) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @@ -1,139 +0,0 @@ | |||||||
| package kvbuilder |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"bytes" |  | ||||||
| 	"reflect" |  | ||||||
| 	"testing" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestBuilder_basic(t *testing.T) { |  | ||||||
| 	var b Builder |  | ||||||
| 	err := b.Add("foo=bar", "bar=baz", "baz=") |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("err: %s", err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	expected := map[string]interface{}{ |  | ||||||
| 		"foo": "bar", |  | ||||||
| 		"bar": "baz", |  | ||||||
| 		"baz": "", |  | ||||||
| 	} |  | ||||||
| 	actual := b.Map() |  | ||||||
| 	if !reflect.DeepEqual(actual, expected) { |  | ||||||
| 		t.Fatalf("bad: %#v", actual) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestBuilder_escapedAt(t *testing.T) { |  | ||||||
| 	var b Builder |  | ||||||
| 	err := b.Add("foo=bar", "bar=\\@baz") |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("err: %s", err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	expected := map[string]interface{}{ |  | ||||||
| 		"foo": "bar", |  | ||||||
| 		"bar": "@baz", |  | ||||||
| 	} |  | ||||||
| 	actual := b.Map() |  | ||||||
| 	if !reflect.DeepEqual(actual, expected) { |  | ||||||
| 		t.Fatalf("bad: %#v", actual) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestBuilder_stdin(t *testing.T) { |  | ||||||
| 	var b Builder |  | ||||||
| 	b.Stdin = bytes.NewBufferString("baz") |  | ||||||
| 	err := b.Add("foo=bar", "bar=-") |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("err: %s", err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	expected := map[string]interface{}{ |  | ||||||
| 		"foo": "bar", |  | ||||||
| 		"bar": "baz", |  | ||||||
| 	} |  | ||||||
| 	actual := b.Map() |  | ||||||
| 	if !reflect.DeepEqual(actual, expected) { |  | ||||||
| 		t.Fatalf("bad: %#v", actual) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestBuilder_stdinMap(t *testing.T) { |  | ||||||
| 	var b Builder |  | ||||||
| 	b.Stdin = bytes.NewBufferString(`{"foo": "bar"}`) |  | ||||||
| 	err := b.Add("-", "bar=baz") |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("err: %s", err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	expected := map[string]interface{}{ |  | ||||||
| 		"foo": "bar", |  | ||||||
| 		"bar": "baz", |  | ||||||
| 	} |  | ||||||
| 	actual := b.Map() |  | ||||||
| 	if !reflect.DeepEqual(actual, expected) { |  | ||||||
| 		t.Fatalf("bad: %#v", actual) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestBuilder_stdinTwice(t *testing.T) { |  | ||||||
| 	var b Builder |  | ||||||
| 	b.Stdin = bytes.NewBufferString(`{"foo": "bar"}`) |  | ||||||
| 	err := b.Add("-", "-") |  | ||||||
| 	if err == nil { |  | ||||||
| 		t.Fatal("should error") |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestBuilder_sameKeyTwice(t *testing.T) { |  | ||||||
| 	var b Builder |  | ||||||
| 	err := b.Add("foo=bar", "foo=baz") |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("err: %s", err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	expected := map[string]interface{}{ |  | ||||||
| 		"foo": []interface{}{"bar", "baz"}, |  | ||||||
| 	} |  | ||||||
| 	actual := b.Map() |  | ||||||
| 	if !reflect.DeepEqual(actual, expected) { |  | ||||||
| 		t.Fatalf("bad: %#v", actual) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestBuilder_sameKeyMultipleTimes(t *testing.T) { |  | ||||||
| 	var b Builder |  | ||||||
| 	err := b.Add("foo=bar", "foo=baz", "foo=bay", "foo=bax", "bar=baz") |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("err: %s", err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	expected := map[string]interface{}{ |  | ||||||
| 		"foo": []interface{}{"bar", "baz", "bay", "bax"}, |  | ||||||
| 		"bar": "baz", |  | ||||||
| 	} |  | ||||||
| 	actual := b.Map() |  | ||||||
| 	if !reflect.DeepEqual(actual, expected) { |  | ||||||
| 		t.Fatalf("bad: %#v", actual) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| func TestBuilder_specialCharactersInKey(t *testing.T) { |  | ||||||
| 	var b Builder |  | ||||||
| 	b.Stdin = bytes.NewBufferString("{\"foo\": \"bay\"}") |  | ||||||
| 	err := b.Add("@foo=bar", "-foo=baz", "-") |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("err: %s", err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	expected := map[string]interface{}{ |  | ||||||
| 		"@foo": "bar", |  | ||||||
| 		"-foo": "baz", |  | ||||||
| 		"foo":  "bay", |  | ||||||
| 	} |  | ||||||
| 	actual := b.Map() |  | ||||||
| 	if !reflect.DeepEqual(actual, expected) { |  | ||||||
| 		t.Fatalf("bad: %#v", actual) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @@ -1,88 +0,0 @@ | |||||||
| package listenerutil |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"io/ioutil" |  | ||||||
| 	"os" |  | ||||||
| 	osuser "os/user" |  | ||||||
| 	"strconv" |  | ||||||
| 	"testing" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestUnixSocketListener(t *testing.T) { |  | ||||||
| 	t.Run("ids", func(t *testing.T) { |  | ||||||
| 		socket, err := ioutil.TempFile("", "socket") |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatal(err) |  | ||||||
| 		} |  | ||||||
| 		defer os.Remove(socket.Name()) |  | ||||||
|  |  | ||||||
| 		uid, gid := os.Getuid(), os.Getgid() |  | ||||||
|  |  | ||||||
| 		u, err := osuser.LookupId(strconv.Itoa(uid)) |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatal(err) |  | ||||||
| 		} |  | ||||||
| 		user := u.Username |  | ||||||
|  |  | ||||||
| 		g, err := osuser.LookupGroupId(strconv.Itoa(gid)) |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatal(err) |  | ||||||
| 		} |  | ||||||
| 		group := g.Name |  | ||||||
|  |  | ||||||
| 		l, err := UnixSocketListener(socket.Name(), &UnixSocketsConfig{ |  | ||||||
| 			User:  user, |  | ||||||
| 			Group: group, |  | ||||||
| 			Mode:  "644", |  | ||||||
| 		}) |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatal(err) |  | ||||||
| 		} |  | ||||||
| 		defer l.Close() |  | ||||||
|  |  | ||||||
| 		fi, err := os.Stat(socket.Name()) |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatal(err) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		mode, err := strconv.ParseUint("644", 8, 32) |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatal(err) |  | ||||||
| 		} |  | ||||||
| 		if fi.Mode().Perm() != os.FileMode(mode) { |  | ||||||
| 			t.Fatalf("failed to set permissions on the socket file") |  | ||||||
| 		} |  | ||||||
| 	}) |  | ||||||
| 	t.Run("names", func(t *testing.T) { |  | ||||||
| 		socket, err := ioutil.TempFile("", "socket") |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatal(err) |  | ||||||
| 		} |  | ||||||
| 		defer os.Remove(socket.Name()) |  | ||||||
|  |  | ||||||
| 		uid, gid := os.Getuid(), os.Getgid() |  | ||||||
| 		l, err := UnixSocketListener(socket.Name(), &UnixSocketsConfig{ |  | ||||||
| 			User:  strconv.Itoa(uid), |  | ||||||
| 			Group: strconv.Itoa(gid), |  | ||||||
| 			Mode:  "644", |  | ||||||
| 		}) |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatal(err) |  | ||||||
| 		} |  | ||||||
| 		defer l.Close() |  | ||||||
|  |  | ||||||
| 		fi, err := os.Stat(socket.Name()) |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatal(err) |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		mode, err := strconv.ParseUint("644", 8, 32) |  | ||||||
| 		if err != nil { |  | ||||||
| 			t.Fatal(err) |  | ||||||
| 		} |  | ||||||
| 		if fi.Mode().Perm() != os.FileMode(mode) { |  | ||||||
| 			t.Fatalf("failed to set permissions on the socket file") |  | ||||||
| 		} |  | ||||||
| 	}) |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @@ -1,74 +0,0 @@ | |||||||
| package reloadutil |  | ||||||
|  |  | ||||||
| import ( |  | ||||||
| 	"crypto/x509" |  | ||||||
| 	"io/ioutil" |  | ||||||
| 	"testing" |  | ||||||
|  |  | ||||||
| 	"github.com/hashicorp/errwrap" |  | ||||||
| ) |  | ||||||
|  |  | ||||||
| func TestReload_KeyWithPassphrase(t *testing.T) { |  | ||||||
| 	password := "password" |  | ||||||
| 	cert := []byte(`-----BEGIN CERTIFICATE----- |  | ||||||
| MIICLzCCAZgCCQCq27CeP4WhlDANBgkqhkiG9w0BAQUFADBcMQswCQYDVQQGEwJV |  | ||||||
| UzELMAkGA1UECAwCQ0ExFjAUBgNVBAcMDVNhbiBGcmFuY2lzY28xEjAQBgNVBAoM |  | ||||||
| CUhhc2hpQ29ycDEUMBIGA1UEAwwLbXl2YXVsdC5jb20wHhcNMTcxMjEzMjEzNTM3 |  | ||||||
| WhcNMTgxMjEzMjEzNTM3WjBcMQswCQYDVQQGEwJVUzELMAkGA1UECAwCQ0ExFjAU |  | ||||||
| BgNVBAcMDVNhbiBGcmFuY2lzY28xEjAQBgNVBAoMCUhhc2hpQ29ycDEUMBIGA1UE |  | ||||||
| AwwLbXl2YXVsdC5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMvsz/9l |  | ||||||
| EJIlRG6DOw4fXdB/aJgJk2rR8cU0D8+vECIzb+MdDK0cBHtLiVpZC/RnZMdMzjGn |  | ||||||
| Z++Fp3dEnT6CD0IjKdJcD+qSyZSjHIuYpHjnjrVlM/Le0xST7egoG+fXkSt4myzG |  | ||||||
| ec2WK1jcZefRRGPycvMqx1yUWU76jDdFZSL5AgMBAAEwDQYJKoZIhvcNAQEFBQAD |  | ||||||
| gYEAQfYE26FLZ9SPPU8bHNDxoxDmGrn8yJ78C490Qpix/w6gdLaBtILenrZbhpnB |  | ||||||
| 3L3okraM8mplaN2KdAcpnsr4wPv9hbYkam0coxCQEKs8ltHSBaXT6uKRWb00nkGu |  | ||||||
| yAXDRpuPdFRqbXW3ZFC5broUrz4ujxTDKfVeIn0zpPZkv24= |  | ||||||
| -----END CERTIFICATE-----`) |  | ||||||
| 	key := []byte(`-----BEGIN RSA PRIVATE KEY----- |  | ||||||
| Proc-Type: 4,ENCRYPTED |  | ||||||
| DEK-Info: DES-EDE3-CBC,64B032D83BD6A6DC |  | ||||||
|  |  | ||||||
| qVJ+mXEBKMkUPrQ8odHunMpPgChQUny4CX73/dAcm7O9iXIv9eXQSxj2qfgCOloj |  | ||||||
| vthg7jYNwtRb0ydzCEnEud35zWw38K/l19/pe4ULfNXlOddlsk4XIHarBiz+KUaX |  | ||||||
| WTbNk0H+DwdcEwhprPgpTk8gp88lZBiHCnTG/s8v/JNt+wkdqjfAp0Xbm9m+OZ7s |  | ||||||
| hlNxZin1OuBdprBqfKWBltUALZYiIBhspMTmh+jGQSyEKNTAIBejIiRH5+xYWuOy |  | ||||||
| xKencq8UpQMOMPR2ZiSw42dU9j8HHMgldI7KszU2FDIEFXG7aSjcxNyyybeBT+Uz |  | ||||||
| YPoxGxSdUYWqaz50UszvHg/QWR8NlPlQc3nFAUVpGKUF9MEQCIAK8HjcpMP+IAVO |  | ||||||
| ertp4cTa2Rpm9YeoFrY6tabvmXApXlQPw6rBn6o5KpceWG3ceOsDOsT+e3edHu9g |  | ||||||
| SGO4hjggbRpO+dBOuwfw4rMn9X1BbqXKJcREAmrgVVSf9/s942E4YOQ+IGJPdtmY |  | ||||||
| WHAFk8hiJepsVCA2NpwVlAD+QbPPaR2RtvYOtq3IKlWRuVQ+6dpxDsz5FlJhs2L+ |  | ||||||
| HsX6XqtwuQM8kk1hO8Gm3VeV7+b64r9kfbO8jCM18GexCYiCtig51mJW6IO42d1K |  | ||||||
| bS1axMx/KeDc/sy7LKEbHnjnYanpGz2Wa2EWhnWAeNXD1nUfUNFPp2SsIGbCMnat |  | ||||||
| mC4O4cO7YRl3+iJg3kHtTPGtgtCjrZcjlyBtxT2VC7SsTcTXZBWovczMIstyr4Ka |  | ||||||
| opM24uvQT3Bc0UM0WNh3tdRFuboxDeBDh7PX/2RIoiaMuCCiRZ3O0A== |  | ||||||
| -----END RSA PRIVATE KEY-----`) |  | ||||||
| 	tempDir, err := ioutil.TempDir("", "vault-test") |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("Error creating temporary directory: %s", err) |  | ||||||
| 	} |  | ||||||
| 	keyFile := tempDir + "/server.key" |  | ||||||
| 	certFile := tempDir + "/server.crt" |  | ||||||
|  |  | ||||||
| 	err = ioutil.WriteFile(certFile, cert, 0755) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("Error writing to temp file: %s", err) |  | ||||||
| 	} |  | ||||||
| 	err = ioutil.WriteFile(keyFile, key, 0755) |  | ||||||
| 	if err != nil { |  | ||||||
| 		t.Fatalf("Error writing to temp file: %s", err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	cg := NewCertificateGetter(certFile, keyFile, "") |  | ||||||
| 	err = cg.Reload() |  | ||||||
| 	if err == nil { |  | ||||||
| 		t.Fatal("error expected") |  | ||||||
| 	} |  | ||||||
| 	if !errwrap.Contains(err, x509.IncorrectPasswordError.Error()) { |  | ||||||
| 		t.Fatalf("expected incorrect password error, got %v", err) |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	cg = NewCertificateGetter(certFile, keyFile, password) |  | ||||||
| 	if err := cg.Reload(); err != nil { |  | ||||||
| 		t.Fatalf("err: %v", err) |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| @@ -26,12 +26,12 @@ import ( | |||||||
| 	aeadwrapper "github.com/hashicorp/go-kms-wrapping/wrappers/aead" | 	aeadwrapper "github.com/hashicorp/go-kms-wrapping/wrappers/aead" | ||||||
| 	"github.com/hashicorp/go-multierror" | 	"github.com/hashicorp/go-multierror" | ||||||
| 	"github.com/hashicorp/go-uuid" | 	"github.com/hashicorp/go-uuid" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/metricsutil" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/reloadutil" | ||||||
| 	"github.com/hashicorp/vault/api" | 	"github.com/hashicorp/vault/api" | ||||||
| 	"github.com/hashicorp/vault/audit" | 	"github.com/hashicorp/vault/audit" | ||||||
| 	"github.com/hashicorp/vault/command/server" | 	"github.com/hashicorp/vault/command/server" | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" |  | ||||||
| 	"github.com/hashicorp/vault/helper/namespace" | 	"github.com/hashicorp/vault/helper/namespace" | ||||||
| 	"github.com/hashicorp/vault/internalshared/reloadutil" |  | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/certutil" | 	"github.com/hashicorp/vault/sdk/helper/certutil" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/consts" | 	"github.com/hashicorp/vault/sdk/helper/consts" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/jsonutil" | 	"github.com/hashicorp/vault/sdk/helper/jsonutil" | ||||||
|   | |||||||
| @@ -8,7 +8,8 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/armon/go-metrics" | 	"github.com/armon/go-metrics" | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" | 	"github.com/hashicorp/shared-secure-libs/metricsutil" | ||||||
|  | 	vaultmetrics "github.com/hashicorp/vault/helper/metricsutil" | ||||||
| 	"github.com/hashicorp/vault/helper/namespace" | 	"github.com/hashicorp/vault/helper/namespace" | ||||||
| 	"github.com/hashicorp/vault/sdk/logical" | 	"github.com/hashicorp/vault/sdk/logical" | ||||||
| ) | ) | ||||||
| @@ -338,7 +339,7 @@ func (c *Core) kvSecretGaugeCollector(ctx context.Context) ([]metricsutil.GaugeL | |||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		results[i].Labels = []metrics.Label{ | 		results[i].Labels = []metrics.Label{ | ||||||
| 			metricsutil.NamespaceLabel(m.Namespace), | 			vaultmetrics.NamespaceLabel(m.Namespace), | ||||||
| 			{"mount_point", m.MountPoint}, | 			{"mount_point", m.MountPoint}, | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| @@ -369,7 +370,7 @@ func (c *Core) entityGaugeCollector(ctx context.Context) ([]metricsutil.GaugeLab | |||||||
| 	values := make([]metricsutil.GaugeLabelValues, len(allNamespaces)) | 	values := make([]metricsutil.GaugeLabelValues, len(allNamespaces)) | ||||||
| 	for i := range values { | 	for i := range values { | ||||||
| 		values[i].Labels = []metrics.Label{ | 		values[i].Labels = []metrics.Label{ | ||||||
| 			metricsutil.NamespaceLabel(allNamespaces[i]), | 			vaultmetrics.NamespaceLabel(allNamespaces[i]), | ||||||
| 		} | 		} | ||||||
| 		values[i].Value = float32(byNamespace[allNamespaces[i].ID]) | 		values[i].Value = float32(byNamespace[allNamespaces[i].ID]) | ||||||
| 	} | 	} | ||||||
| @@ -408,7 +409,7 @@ func (c *Core) entityGaugeCollectorByMount(ctx context.Context) ([]metricsutil.G | |||||||
| 		} | 		} | ||||||
| 		values = append(values, metricsutil.GaugeLabelValues{ | 		values = append(values, metricsutil.GaugeLabelValues{ | ||||||
| 			Labels: []metrics.Label{ | 			Labels: []metrics.Label{ | ||||||
| 				metricsutil.NamespaceLabel(mountEntry.namespace), | 				vaultmetrics.NamespaceLabel(mountEntry.namespace), | ||||||
| 				{"auth_method", mountEntry.Type}, | 				{"auth_method", mountEntry.Type}, | ||||||
| 				{"mount_point", "auth/" + mountEntry.Path}, | 				{"mount_point", "auth/" + mountEntry.Path}, | ||||||
| 			}, | 			}, | ||||||
|   | |||||||
| @@ -12,7 +12,7 @@ import ( | |||||||
| 	log "github.com/hashicorp/go-hclog" | 	log "github.com/hashicorp/go-hclog" | ||||||
| 	"github.com/hashicorp/go-memdb" | 	"github.com/hashicorp/go-memdb" | ||||||
| 	"github.com/hashicorp/vault/helper/identity" | 	"github.com/hashicorp/vault/helper/identity" | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" | 	vaultmetrics "github.com/hashicorp/vault/helper/metricsutil" | ||||||
| 	"github.com/hashicorp/vault/helper/namespace" | 	"github.com/hashicorp/vault/helper/namespace" | ||||||
| 	"github.com/hashicorp/vault/helper/storagepacker" | 	"github.com/hashicorp/vault/helper/storagepacker" | ||||||
| 	"github.com/hashicorp/vault/sdk/framework" | 	"github.com/hashicorp/vault/sdk/framework" | ||||||
| @@ -576,7 +576,7 @@ func (i *IdentityStore) CreateOrFetchEntity(ctx context.Context, alias *logical. | |||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			nsLabel = metrics.Label{"namespace", "unknown"} | 			nsLabel = metrics.Label{"namespace", "unknown"} | ||||||
| 		} else { | 		} else { | ||||||
| 			nsLabel = metricsutil.NamespaceLabel(ns) | 			nsLabel = vaultmetrics.NamespaceLabel(ns) | ||||||
| 		} | 		} | ||||||
| 		i.core.MetricSink().IncrCounterWithLabels( | 		i.core.MetricSink().IncrCounterWithLabels( | ||||||
| 			[]string{"identity", "entity", "creation"}, | 			[]string{"identity", "entity", "creation"}, | ||||||
|   | |||||||
| @@ -23,9 +23,9 @@ import ( | |||||||
| 	memdb "github.com/hashicorp/go-memdb" | 	memdb "github.com/hashicorp/go-memdb" | ||||||
| 	"github.com/hashicorp/go-multierror" | 	"github.com/hashicorp/go-multierror" | ||||||
| 	uuid "github.com/hashicorp/go-uuid" | 	uuid "github.com/hashicorp/go-uuid" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/metricsutil" | ||||||
| 	"github.com/hashicorp/vault/helper/hostutil" | 	"github.com/hashicorp/vault/helper/hostutil" | ||||||
| 	"github.com/hashicorp/vault/helper/identity" | 	"github.com/hashicorp/vault/helper/identity" | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" |  | ||||||
| 	"github.com/hashicorp/vault/helper/monitor" | 	"github.com/hashicorp/vault/helper/monitor" | ||||||
| 	"github.com/hashicorp/vault/helper/namespace" | 	"github.com/hashicorp/vault/helper/namespace" | ||||||
| 	"github.com/hashicorp/vault/helper/random" | 	"github.com/hashicorp/vault/helper/random" | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ import ( | |||||||
|  |  | ||||||
| 	log "github.com/hashicorp/go-hclog" | 	log "github.com/hashicorp/go-hclog" | ||||||
| 	"github.com/hashicorp/go-memdb" | 	"github.com/hashicorp/go-memdb" | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" | 	"github.com/hashicorp/shared-secure-libs/metricsutil" | ||||||
| 	"github.com/hashicorp/vault/sdk/logical" | 	"github.com/hashicorp/vault/sdk/logical" | ||||||
| ) | ) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ import ( | |||||||
| 	"github.com/armon/go-metrics" | 	"github.com/armon/go-metrics" | ||||||
| 	log "github.com/hashicorp/go-hclog" | 	log "github.com/hashicorp/go-hclog" | ||||||
| 	"github.com/hashicorp/go-uuid" | 	"github.com/hashicorp/go-uuid" | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" | 	"github.com/hashicorp/shared-secure-libs/metricsutil" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/pathmanager" | 	"github.com/hashicorp/vault/sdk/helper/pathmanager" | ||||||
| 	"github.com/sethvargo/go-limiter" | 	"github.com/sethvargo/go-limiter" | ||||||
| 	"github.com/sethvargo/go-limiter/httplimit" | 	"github.com/sethvargo/go-limiter/httplimit" | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	log "github.com/hashicorp/go-hclog" | 	log "github.com/hashicorp/go-hclog" | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" | 	"github.com/hashicorp/shared-secure-libs/metricsutil" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/logging" | 	"github.com/hashicorp/vault/sdk/helper/logging" | ||||||
| 	"github.com/stretchr/testify/require" | 	"github.com/stretchr/testify/require" | ||||||
| 	"go.uber.org/atomic" | 	"go.uber.org/atomic" | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ import ( | |||||||
|  |  | ||||||
| 	"github.com/go-test/deep" | 	"github.com/go-test/deep" | ||||||
| 	log "github.com/hashicorp/go-hclog" | 	log "github.com/hashicorp/go-hclog" | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" | 	"github.com/hashicorp/shared-secure-libs/metricsutil" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/logging" | 	"github.com/hashicorp/vault/sdk/helper/logging" | ||||||
| 	"github.com/stretchr/testify/require" | 	"github.com/stretchr/testify/require" | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -6,7 +6,7 @@ import ( | |||||||
| 	"context" | 	"context" | ||||||
|  |  | ||||||
| 	log "github.com/hashicorp/go-hclog" | 	log "github.com/hashicorp/go-hclog" | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" | 	"github.com/hashicorp/shared-secure-libs/metricsutil" | ||||||
|  |  | ||||||
| 	memdb "github.com/hashicorp/go-memdb" | 	memdb "github.com/hashicorp/go-memdb" | ||||||
| ) | ) | ||||||
|   | |||||||
| @@ -12,10 +12,11 @@ import ( | |||||||
| 	"github.com/hashicorp/errwrap" | 	"github.com/hashicorp/errwrap" | ||||||
| 	multierror "github.com/hashicorp/go-multierror" | 	multierror "github.com/hashicorp/go-multierror" | ||||||
| 	sockaddr "github.com/hashicorp/go-sockaddr" | 	sockaddr "github.com/hashicorp/go-sockaddr" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/configutil" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/metricsutil" | ||||||
| 	"github.com/hashicorp/vault/helper/identity" | 	"github.com/hashicorp/vault/helper/identity" | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" | 	vaultmetrics "github.com/hashicorp/vault/helper/metricsutil" | ||||||
| 	"github.com/hashicorp/vault/helper/namespace" | 	"github.com/hashicorp/vault/helper/namespace" | ||||||
| 	"github.com/hashicorp/vault/internalshared/configutil" |  | ||||||
| 	"github.com/hashicorp/vault/sdk/framework" | 	"github.com/hashicorp/vault/sdk/framework" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/consts" | 	"github.com/hashicorp/vault/sdk/helper/consts" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/errutil" | 	"github.com/hashicorp/vault/sdk/helper/errutil" | ||||||
| @@ -869,7 +870,7 @@ func (c *Core) handleRequest(ctx context.Context, req *logical.Request) (retResp | |||||||
| 				[]string{"secret", "lease", "creation"}, | 				[]string{"secret", "lease", "creation"}, | ||||||
| 				1, | 				1, | ||||||
| 				[]metrics.Label{ | 				[]metrics.Label{ | ||||||
| 					metricsutil.NamespaceLabel(ns), | 					vaultmetrics.NamespaceLabel(ns), | ||||||
| 					{"secret_engine", req.MountType}, | 					{"secret_engine", req.MountType}, | ||||||
| 					{"mount_point", mountPointWithoutNs}, | 					{"mount_point", mountPointWithoutNs}, | ||||||
| 					{"creation_ttl", ttl_label}, | 					{"creation_ttl", ttl_label}, | ||||||
| @@ -1266,7 +1267,7 @@ func (c *Core) handleLoginRequest(ctx context.Context, req *logical.Request) (re | |||||||
| 			[]string{"token", "creation"}, | 			[]string{"token", "creation"}, | ||||||
| 			1, | 			1, | ||||||
| 			[]metrics.Label{ | 			[]metrics.Label{ | ||||||
| 				metricsutil.NamespaceLabel(ns), | 				vaultmetrics.NamespaceLabel(ns), | ||||||
| 				{"auth_method", req.MountType}, | 				{"auth_method", req.MountType}, | ||||||
| 				{"mount_point", mountPointWithoutNs}, | 				{"mount_point", mountPointWithoutNs}, | ||||||
| 				{"creation_ttl", ttl_label}, | 				{"creation_ttl", ttl_label}, | ||||||
|   | |||||||
| @@ -30,13 +30,13 @@ import ( | |||||||
| 	cleanhttp "github.com/hashicorp/go-cleanhttp" | 	cleanhttp "github.com/hashicorp/go-cleanhttp" | ||||||
| 	log "github.com/hashicorp/go-hclog" | 	log "github.com/hashicorp/go-hclog" | ||||||
| 	raftlib "github.com/hashicorp/raft" | 	raftlib "github.com/hashicorp/raft" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/configutil" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/metricsutil" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/reloadutil" | ||||||
| 	"github.com/hashicorp/vault/api" | 	"github.com/hashicorp/vault/api" | ||||||
| 	"github.com/hashicorp/vault/audit" | 	"github.com/hashicorp/vault/audit" | ||||||
| 	"github.com/hashicorp/vault/command/server" | 	"github.com/hashicorp/vault/command/server" | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" |  | ||||||
| 	"github.com/hashicorp/vault/helper/namespace" | 	"github.com/hashicorp/vault/helper/namespace" | ||||||
| 	"github.com/hashicorp/vault/internalshared/configutil" |  | ||||||
| 	"github.com/hashicorp/vault/internalshared/reloadutil" |  | ||||||
| 	dbMysql "github.com/hashicorp/vault/plugins/database/mysql" | 	dbMysql "github.com/hashicorp/vault/plugins/database/mysql" | ||||||
| 	dbPostgres "github.com/hashicorp/vault/plugins/database/postgresql" | 	dbPostgres "github.com/hashicorp/vault/plugins/database/postgresql" | ||||||
| 	"github.com/hashicorp/vault/sdk/framework" | 	"github.com/hashicorp/vault/sdk/framework" | ||||||
|   | |||||||
| @@ -20,8 +20,9 @@ import ( | |||||||
| 	log "github.com/hashicorp/go-hclog" | 	log "github.com/hashicorp/go-hclog" | ||||||
| 	"github.com/hashicorp/go-multierror" | 	"github.com/hashicorp/go-multierror" | ||||||
| 	"github.com/hashicorp/go-sockaddr" | 	"github.com/hashicorp/go-sockaddr" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/metricsutil" | ||||||
| 	"github.com/hashicorp/vault/helper/identity" | 	"github.com/hashicorp/vault/helper/identity" | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" | 	vaultmetrics "github.com/hashicorp/vault/helper/metricsutil" | ||||||
| 	"github.com/hashicorp/vault/helper/namespace" | 	"github.com/hashicorp/vault/helper/namespace" | ||||||
| 	"github.com/hashicorp/vault/sdk/framework" | 	"github.com/hashicorp/vault/sdk/framework" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/base62" | 	"github.com/hashicorp/vault/sdk/helper/base62" | ||||||
| @@ -2728,7 +2729,7 @@ func (ts *TokenStore) handleCreateCommon(ctx context.Context, req *logical.Reque | |||||||
| 		[]string{"token", "creation"}, | 		[]string{"token", "creation"}, | ||||||
| 		1, | 		1, | ||||||
| 		[]metrics.Label{ | 		[]metrics.Label{ | ||||||
| 			metricsutil.NamespaceLabel(ns), | 			vaultmetrics.NamespaceLabel(ns), | ||||||
| 			{"auth_method", "token"}, | 			{"auth_method", "token"}, | ||||||
| 			{"mount_point", mountPointWithoutNs}, // path, not accessor | 			{"mount_point", mountPointWithoutNs}, // path, not accessor | ||||||
| 			{"creation_ttl", ttl_label}, | 			{"creation_ttl", ttl_label}, | ||||||
| @@ -3429,7 +3430,7 @@ func (ts *TokenStore) gaugeCollector(ctx context.Context) ([]metricsutil.GaugeLa | |||||||
| 	// to potentially handle a larger number of tokens. | 	// to potentially handle a larger number of tokens. | ||||||
| 	intValues := make([]int, len(allNamespaces)) | 	intValues := make([]int, len(allNamespaces)) | ||||||
| 	for i, ns := range allNamespaces { | 	for i, ns := range allNamespaces { | ||||||
| 		values[i].Labels = []metrics.Label{metricsutil.NamespaceLabel(ns)} | 		values[i].Labels = []metrics.Label{vaultmetrics.NamespaceLabel(ns)} | ||||||
| 		namespacePosition[ns.ID] = i | 		namespacePosition[ns.ID] = i | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -3521,7 +3522,7 @@ func (ts *TokenStore) gaugeCollectorByPolicy(ctx context.Context) ([]metricsutil | |||||||
| 			flattenedResults = append(flattenedResults, | 			flattenedResults = append(flattenedResults, | ||||||
| 				metricsutil.GaugeLabelValues{ | 				metricsutil.GaugeLabelValues{ | ||||||
| 					Labels: []metrics.Label{ | 					Labels: []metrics.Label{ | ||||||
| 						metricsutil.NamespaceLabel(ns), | 						vaultmetrics.NamespaceLabel(ns), | ||||||
| 						{"policy", policy}, | 						{"policy", policy}, | ||||||
| 					}, | 					}, | ||||||
| 					Value: float32(count), | 					Value: float32(count), | ||||||
| @@ -3589,7 +3590,7 @@ func (ts *TokenStore) gaugeCollectorByTtl(ctx context.Context) ([]metricsutil.Ga | |||||||
| 			flattenedResults = append(flattenedResults, | 			flattenedResults = append(flattenedResults, | ||||||
| 				metricsutil.GaugeLabelValues{ | 				metricsutil.GaugeLabelValues{ | ||||||
| 					Labels: []metrics.Label{ | 					Labels: []metrics.Label{ | ||||||
| 						metricsutil.NamespaceLabel(ns), | 						vaultmetrics.NamespaceLabel(ns), | ||||||
| 						{"creation_ttl", bucket}, | 						{"creation_ttl", bucket}, | ||||||
| 					}, | 					}, | ||||||
| 					Value: float32(count), | 					Value: float32(count), | ||||||
| @@ -3689,7 +3690,7 @@ func (ts *TokenStore) gaugeCollectorByMethod(ctx context.Context) ([]metricsutil | |||||||
| 			flattenedResults = append(flattenedResults, | 			flattenedResults = append(flattenedResults, | ||||||
| 				metricsutil.GaugeLabelValues{ | 				metricsutil.GaugeLabelValues{ | ||||||
| 					Labels: []metrics.Label{ | 					Labels: []metrics.Label{ | ||||||
| 						metricsutil.NamespaceLabel(ns), | 						vaultmetrics.NamespaceLabel(ns), | ||||||
| 						{"auth_method", method}, | 						{"auth_method", method}, | ||||||
| 					}, | 					}, | ||||||
| 					Value: float32(count), | 					Value: float32(count), | ||||||
|   | |||||||
| @@ -18,8 +18,8 @@ import ( | |||||||
| 	"github.com/hashicorp/go-hclog" | 	"github.com/hashicorp/go-hclog" | ||||||
| 	"github.com/hashicorp/go-sockaddr" | 	"github.com/hashicorp/go-sockaddr" | ||||||
| 	"github.com/hashicorp/go-uuid" | 	"github.com/hashicorp/go-uuid" | ||||||
|  | 	"github.com/hashicorp/shared-secure-libs/metricsutil" | ||||||
| 	"github.com/hashicorp/vault/helper/identity" | 	"github.com/hashicorp/vault/helper/identity" | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" |  | ||||||
| 	"github.com/hashicorp/vault/helper/namespace" | 	"github.com/hashicorp/vault/helper/namespace" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/locksutil" | 	"github.com/hashicorp/vault/sdk/helper/locksutil" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/parseutil" | 	"github.com/hashicorp/vault/sdk/helper/parseutil" | ||||||
|   | |||||||
| @@ -12,7 +12,8 @@ import ( | |||||||
|  |  | ||||||
| 	"github.com/armon/go-metrics" | 	"github.com/armon/go-metrics" | ||||||
| 	"github.com/hashicorp/errwrap" | 	"github.com/hashicorp/errwrap" | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" | 	"github.com/hashicorp/shared-secure-libs/metricsutil" | ||||||
|  | 	vaultmetrics "github.com/hashicorp/vault/helper/metricsutil" | ||||||
| 	"github.com/hashicorp/vault/helper/namespace" | 	"github.com/hashicorp/vault/helper/namespace" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/certutil" | 	"github.com/hashicorp/vault/sdk/helper/certutil" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/consts" | 	"github.com/hashicorp/vault/sdk/helper/consts" | ||||||
| @@ -152,7 +153,7 @@ DONELISTHANDLING: | |||||||
| 		[]string{"token", "creation"}, | 		[]string{"token", "creation"}, | ||||||
| 		1, | 		1, | ||||||
| 		[]metrics.Label{ | 		[]metrics.Label{ | ||||||
| 			metricsutil.NamespaceLabel(ns), | 			vaultmetrics.NamespaceLabel(ns), | ||||||
| 			// The type of the secret engine is not all that useful; | 			// The type of the secret engine is not all that useful; | ||||||
| 			// we could use "token" but let's be more descriptive, | 			// we could use "token" but let's be more descriptive, | ||||||
| 			// even if it's not a real auth method. | 			// even if it's not a real auth method. | ||||||
|   | |||||||
							
								
								
									
										363
									
								
								vendor/github.com/hashicorp/shared-secure-libs/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										363
									
								
								vendor/github.com/hashicorp/shared-secure-libs/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,363 @@ | |||||||
|  | Mozilla Public License, version 2.0 | ||||||
|  |  | ||||||
|  | 1. Definitions | ||||||
|  |  | ||||||
|  | 1.1. "Contributor" | ||||||
|  |  | ||||||
|  |      means each individual or legal entity that creates, contributes to the | ||||||
|  |      creation of, or owns Covered Software. | ||||||
|  |  | ||||||
|  | 1.2. "Contributor Version" | ||||||
|  |  | ||||||
|  |      means the combination of the Contributions of others (if any) used by a | ||||||
|  |      Contributor and that particular Contributor's Contribution. | ||||||
|  |  | ||||||
|  | 1.3. "Contribution" | ||||||
|  |  | ||||||
|  |      means Covered Software of a particular Contributor. | ||||||
|  |  | ||||||
|  | 1.4. "Covered Software" | ||||||
|  |  | ||||||
|  |      means Source Code Form to which the initial Contributor has attached the | ||||||
|  |      notice in Exhibit A, the Executable Form of such Source Code Form, and | ||||||
|  |      Modifications of such Source Code Form, in each case including portions | ||||||
|  |      thereof. | ||||||
|  |  | ||||||
|  | 1.5. "Incompatible With Secondary Licenses" | ||||||
|  |      means | ||||||
|  |  | ||||||
|  |      a. that the initial Contributor has attached the notice described in | ||||||
|  |         Exhibit B to the Covered Software; or | ||||||
|  |  | ||||||
|  |      b. that the Covered Software was made available under the terms of | ||||||
|  |         version 1.1 or earlier of the License, but not also under the terms of | ||||||
|  |         a Secondary License. | ||||||
|  |  | ||||||
|  | 1.6. "Executable Form" | ||||||
|  |  | ||||||
|  |      means any form of the work other than Source Code Form. | ||||||
|  |  | ||||||
|  | 1.7. "Larger Work" | ||||||
|  |  | ||||||
|  |      means a work that combines Covered Software with other material, in a | ||||||
|  |      separate file or files, that is not Covered Software. | ||||||
|  |  | ||||||
|  | 1.8. "License" | ||||||
|  |  | ||||||
|  |      means this document. | ||||||
|  |  | ||||||
|  | 1.9. "Licensable" | ||||||
|  |  | ||||||
|  |      means having the right to grant, to the maximum extent possible, whether | ||||||
|  |      at the time of the initial grant or subsequently, any and all of the | ||||||
|  |      rights conveyed by this License. | ||||||
|  |  | ||||||
|  | 1.10. "Modifications" | ||||||
|  |  | ||||||
|  |      means any of the following: | ||||||
|  |  | ||||||
|  |      a. any file in Source Code Form that results from an addition to, | ||||||
|  |         deletion from, or modification of the contents of Covered Software; or | ||||||
|  |  | ||||||
|  |      b. any new file in Source Code Form that contains any Covered Software. | ||||||
|  |  | ||||||
|  | 1.11. "Patent Claims" of a Contributor | ||||||
|  |  | ||||||
|  |       means any patent claim(s), including without limitation, method, | ||||||
|  |       process, and apparatus claims, in any patent Licensable by such | ||||||
|  |       Contributor that would be infringed, but for the grant of the License, | ||||||
|  |       by the making, using, selling, offering for sale, having made, import, | ||||||
|  |       or transfer of either its Contributions or its Contributor Version. | ||||||
|  |  | ||||||
|  | 1.12. "Secondary License" | ||||||
|  |  | ||||||
|  |       means either the GNU General Public License, Version 2.0, the GNU Lesser | ||||||
|  |       General Public License, Version 2.1, the GNU Affero General Public | ||||||
|  |       License, Version 3.0, or any later versions of those licenses. | ||||||
|  |  | ||||||
|  | 1.13. "Source Code Form" | ||||||
|  |  | ||||||
|  |       means the form of the work preferred for making modifications. | ||||||
|  |  | ||||||
|  | 1.14. "You" (or "Your") | ||||||
|  |  | ||||||
|  |       means an individual or a legal entity exercising rights under this | ||||||
|  |       License. For legal entities, "You" includes any entity that controls, is | ||||||
|  |       controlled by, or is under common control with You. For purposes of this | ||||||
|  |       definition, "control" means (a) the power, direct or indirect, to cause | ||||||
|  |       the direction or management of such entity, whether by contract or | ||||||
|  |       otherwise, or (b) ownership of more than fifty percent (50%) of the | ||||||
|  |       outstanding shares or beneficial ownership of such entity. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 2. License Grants and Conditions | ||||||
|  |  | ||||||
|  | 2.1. Grants | ||||||
|  |  | ||||||
|  |      Each Contributor hereby grants You a world-wide, royalty-free, | ||||||
|  |      non-exclusive license: | ||||||
|  |  | ||||||
|  |      a. under intellectual property rights (other than patent or trademark) | ||||||
|  |         Licensable by such Contributor to use, reproduce, make available, | ||||||
|  |         modify, display, perform, distribute, and otherwise exploit its | ||||||
|  |         Contributions, either on an unmodified basis, with Modifications, or | ||||||
|  |         as part of a Larger Work; and | ||||||
|  |  | ||||||
|  |      b. under Patent Claims of such Contributor to make, use, sell, offer for | ||||||
|  |         sale, have made, import, and otherwise transfer either its | ||||||
|  |         Contributions or its Contributor Version. | ||||||
|  |  | ||||||
|  | 2.2. Effective Date | ||||||
|  |  | ||||||
|  |      The licenses granted in Section 2.1 with respect to any Contribution | ||||||
|  |      become effective for each Contribution on the date the Contributor first | ||||||
|  |      distributes such Contribution. | ||||||
|  |  | ||||||
|  | 2.3. Limitations on Grant Scope | ||||||
|  |  | ||||||
|  |      The licenses granted in this Section 2 are the only rights granted under | ||||||
|  |      this License. No additional rights or licenses will be implied from the | ||||||
|  |      distribution or licensing of Covered Software under this License. | ||||||
|  |      Notwithstanding Section 2.1(b) above, no patent license is granted by a | ||||||
|  |      Contributor: | ||||||
|  |  | ||||||
|  |      a. for any code that a Contributor has removed from Covered Software; or | ||||||
|  |  | ||||||
|  |      b. for infringements caused by: (i) Your and any other third party's | ||||||
|  |         modifications of Covered Software, or (ii) the combination of its | ||||||
|  |         Contributions with other software (except as part of its Contributor | ||||||
|  |         Version); or | ||||||
|  |  | ||||||
|  |      c. under Patent Claims infringed by Covered Software in the absence of | ||||||
|  |         its Contributions. | ||||||
|  |  | ||||||
|  |      This License does not grant any rights in the trademarks, service marks, | ||||||
|  |      or logos of any Contributor (except as may be necessary to comply with | ||||||
|  |      the notice requirements in Section 3.4). | ||||||
|  |  | ||||||
|  | 2.4. Subsequent Licenses | ||||||
|  |  | ||||||
|  |      No Contributor makes additional grants as a result of Your choice to | ||||||
|  |      distribute the Covered Software under a subsequent version of this | ||||||
|  |      License (see Section 10.2) or under the terms of a Secondary License (if | ||||||
|  |      permitted under the terms of Section 3.3). | ||||||
|  |  | ||||||
|  | 2.5. Representation | ||||||
|  |  | ||||||
|  |      Each Contributor represents that the Contributor believes its | ||||||
|  |      Contributions are its original creation(s) or it has sufficient rights to | ||||||
|  |      grant the rights to its Contributions conveyed by this License. | ||||||
|  |  | ||||||
|  | 2.6. Fair Use | ||||||
|  |  | ||||||
|  |      This License is not intended to limit any rights You have under | ||||||
|  |      applicable copyright doctrines of fair use, fair dealing, or other | ||||||
|  |      equivalents. | ||||||
|  |  | ||||||
|  | 2.7. Conditions | ||||||
|  |  | ||||||
|  |      Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in | ||||||
|  |      Section 2.1. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 3. Responsibilities | ||||||
|  |  | ||||||
|  | 3.1. Distribution of Source Form | ||||||
|  |  | ||||||
|  |      All distribution of Covered Software in Source Code Form, including any | ||||||
|  |      Modifications that You create or to which You contribute, must be under | ||||||
|  |      the terms of this License. You must inform recipients that the Source | ||||||
|  |      Code Form of the Covered Software is governed by the terms of this | ||||||
|  |      License, and how they can obtain a copy of this License. You may not | ||||||
|  |      attempt to alter or restrict the recipients' rights in the Source Code | ||||||
|  |      Form. | ||||||
|  |  | ||||||
|  | 3.2. Distribution of Executable Form | ||||||
|  |  | ||||||
|  |      If You distribute Covered Software in Executable Form then: | ||||||
|  |  | ||||||
|  |      a. such Covered Software must also be made available in Source Code Form, | ||||||
|  |         as described in Section 3.1, and You must inform recipients of the | ||||||
|  |         Executable Form how they can obtain a copy of such Source Code Form by | ||||||
|  |         reasonable means in a timely manner, at a charge no more than the cost | ||||||
|  |         of distribution to the recipient; and | ||||||
|  |  | ||||||
|  |      b. You may distribute such Executable Form under the terms of this | ||||||
|  |         License, or sublicense it under different terms, provided that the | ||||||
|  |         license for the Executable Form does not attempt to limit or alter the | ||||||
|  |         recipients' rights in the Source Code Form under this License. | ||||||
|  |  | ||||||
|  | 3.3. Distribution of a Larger Work | ||||||
|  |  | ||||||
|  |      You may create and distribute a Larger Work under terms of Your choice, | ||||||
|  |      provided that You also comply with the requirements of this License for | ||||||
|  |      the Covered Software. If the Larger Work is a combination of Covered | ||||||
|  |      Software with a work governed by one or more Secondary Licenses, and the | ||||||
|  |      Covered Software is not Incompatible With Secondary Licenses, this | ||||||
|  |      License permits You to additionally distribute such Covered Software | ||||||
|  |      under the terms of such Secondary License(s), so that the recipient of | ||||||
|  |      the Larger Work may, at their option, further distribute the Covered | ||||||
|  |      Software under the terms of either this License or such Secondary | ||||||
|  |      License(s). | ||||||
|  |  | ||||||
|  | 3.4. Notices | ||||||
|  |  | ||||||
|  |      You may not remove or alter the substance of any license notices | ||||||
|  |      (including copyright notices, patent notices, disclaimers of warranty, or | ||||||
|  |      limitations of liability) contained within the Source Code Form of the | ||||||
|  |      Covered Software, except that You may alter any license notices to the | ||||||
|  |      extent required to remedy known factual inaccuracies. | ||||||
|  |  | ||||||
|  | 3.5. Application of Additional Terms | ||||||
|  |  | ||||||
|  |      You may choose to offer, and to charge a fee for, warranty, support, | ||||||
|  |      indemnity or liability obligations to one or more recipients of Covered | ||||||
|  |      Software. However, You may do so only on Your own behalf, and not on | ||||||
|  |      behalf of any Contributor. You must make it absolutely clear that any | ||||||
|  |      such warranty, support, indemnity, or liability obligation is offered by | ||||||
|  |      You alone, and You hereby agree to indemnify every Contributor for any | ||||||
|  |      liability incurred by such Contributor as a result of warranty, support, | ||||||
|  |      indemnity or liability terms You offer. You may include additional | ||||||
|  |      disclaimers of warranty and limitations of liability specific to any | ||||||
|  |      jurisdiction. | ||||||
|  |  | ||||||
|  | 4. Inability to Comply Due to Statute or Regulation | ||||||
|  |  | ||||||
|  |    If it is impossible for You to comply with any of the terms of this License | ||||||
|  |    with respect to some or all of the Covered Software due to statute, | ||||||
|  |    judicial order, or regulation then You must: (a) comply with the terms of | ||||||
|  |    this License to the maximum extent possible; and (b) describe the | ||||||
|  |    limitations and the code they affect. Such description must be placed in a | ||||||
|  |    text file included with all distributions of the Covered Software under | ||||||
|  |    this License. Except to the extent prohibited by statute or regulation, | ||||||
|  |    such description must be sufficiently detailed for a recipient of ordinary | ||||||
|  |    skill to be able to understand it. | ||||||
|  |  | ||||||
|  | 5. Termination | ||||||
|  |  | ||||||
|  | 5.1. The rights granted under this License will terminate automatically if You | ||||||
|  |      fail to comply with any of its terms. However, if You become compliant, | ||||||
|  |      then the rights granted under this License from a particular Contributor | ||||||
|  |      are reinstated (a) provisionally, unless and until such Contributor | ||||||
|  |      explicitly and finally terminates Your grants, and (b) on an ongoing | ||||||
|  |      basis, if such Contributor fails to notify You of the non-compliance by | ||||||
|  |      some reasonable means prior to 60 days after You have come back into | ||||||
|  |      compliance. Moreover, Your grants from a particular Contributor are | ||||||
|  |      reinstated on an ongoing basis if such Contributor notifies You of the | ||||||
|  |      non-compliance by some reasonable means, this is the first time You have | ||||||
|  |      received notice of non-compliance with this License from such | ||||||
|  |      Contributor, and You become compliant prior to 30 days after Your receipt | ||||||
|  |      of the notice. | ||||||
|  |  | ||||||
|  | 5.2. If You initiate litigation against any entity by asserting a patent | ||||||
|  |      infringement claim (excluding declaratory judgment actions, | ||||||
|  |      counter-claims, and cross-claims) alleging that a Contributor Version | ||||||
|  |      directly or indirectly infringes any patent, then the rights granted to | ||||||
|  |      You by any and all Contributors for the Covered Software under Section | ||||||
|  |      2.1 of this License shall terminate. | ||||||
|  |  | ||||||
|  | 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end user | ||||||
|  |      license agreements (excluding distributors and resellers) which have been | ||||||
|  |      validly granted by You or Your distributors under this License prior to | ||||||
|  |      termination shall survive termination. | ||||||
|  |  | ||||||
|  | 6. Disclaimer of Warranty | ||||||
|  |  | ||||||
|  |    Covered Software is provided under this License on an "as is" basis, | ||||||
|  |    without warranty of any kind, either expressed, implied, or statutory, | ||||||
|  |    including, without limitation, warranties that the Covered Software is free | ||||||
|  |    of defects, merchantable, fit for a particular purpose or non-infringing. | ||||||
|  |    The entire risk as to the quality and performance of the Covered Software | ||||||
|  |    is with You. Should any Covered Software prove defective in any respect, | ||||||
|  |    You (not any Contributor) assume the cost of any necessary servicing, | ||||||
|  |    repair, or correction. This disclaimer of warranty constitutes an essential | ||||||
|  |    part of this License. No use of  any Covered Software is authorized under | ||||||
|  |    this License except under this disclaimer. | ||||||
|  |  | ||||||
|  | 7. Limitation of Liability | ||||||
|  |  | ||||||
|  |    Under no circumstances and under no legal theory, whether tort (including | ||||||
|  |    negligence), contract, or otherwise, shall any Contributor, or anyone who | ||||||
|  |    distributes Covered Software as permitted above, be liable to You for any | ||||||
|  |    direct, indirect, special, incidental, or consequential damages of any | ||||||
|  |    character including, without limitation, damages for lost profits, loss of | ||||||
|  |    goodwill, work stoppage, computer failure or malfunction, or any and all | ||||||
|  |    other commercial damages or losses, even if such party shall have been | ||||||
|  |    informed of the possibility of such damages. This limitation of liability | ||||||
|  |    shall not apply to liability for death or personal injury resulting from | ||||||
|  |    such party's negligence to the extent applicable law prohibits such | ||||||
|  |    limitation. Some jurisdictions do not allow the exclusion or limitation of | ||||||
|  |    incidental or consequential damages, so this exclusion and limitation may | ||||||
|  |    not apply to You. | ||||||
|  |  | ||||||
|  | 8. Litigation | ||||||
|  |  | ||||||
|  |    Any litigation relating to this License may be brought only in the courts | ||||||
|  |    of a jurisdiction where the defendant maintains its principal place of | ||||||
|  |    business and such litigation shall be governed by laws of that | ||||||
|  |    jurisdiction, without reference to its conflict-of-law provisions. Nothing | ||||||
|  |    in this Section shall prevent a party's ability to bring cross-claims or | ||||||
|  |    counter-claims. | ||||||
|  |  | ||||||
|  | 9. Miscellaneous | ||||||
|  |  | ||||||
|  |    This License represents the complete agreement concerning the subject | ||||||
|  |    matter hereof. If any provision of this License is held to be | ||||||
|  |    unenforceable, such provision shall be reformed only to the extent | ||||||
|  |    necessary to make it enforceable. Any law or regulation which provides that | ||||||
|  |    the language of a contract shall be construed against the drafter shall not | ||||||
|  |    be used to construe this License against a Contributor. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 10. Versions of the License | ||||||
|  |  | ||||||
|  | 10.1. New Versions | ||||||
|  |  | ||||||
|  |       Mozilla Foundation is the license steward. Except as provided in Section | ||||||
|  |       10.3, no one other than the license steward has the right to modify or | ||||||
|  |       publish new versions of this License. Each version will be given a | ||||||
|  |       distinguishing version number. | ||||||
|  |  | ||||||
|  | 10.2. Effect of New Versions | ||||||
|  |  | ||||||
|  |       You may distribute the Covered Software under the terms of the version | ||||||
|  |       of the License under which You originally received the Covered Software, | ||||||
|  |       or under the terms of any subsequent version published by the license | ||||||
|  |       steward. | ||||||
|  |  | ||||||
|  | 10.3. Modified Versions | ||||||
|  |  | ||||||
|  |       If you create software not governed by this License, and you want to | ||||||
|  |       create a new license for such software, you may create and use a | ||||||
|  |       modified version of this License if you rename the license and remove | ||||||
|  |       any references to the name of the license steward (except to note that | ||||||
|  |       such modified license differs from this License). | ||||||
|  |  | ||||||
|  | 10.4. Distributing Source Code Form that is Incompatible With Secondary | ||||||
|  |       Licenses If You choose to distribute Source Code Form that is | ||||||
|  |       Incompatible With Secondary Licenses under the terms of this version of | ||||||
|  |       the License, the notice described in Exhibit B of this License must be | ||||||
|  |       attached. | ||||||
|  |  | ||||||
|  | Exhibit A - Source Code Form License Notice | ||||||
|  |  | ||||||
|  |       This Source Code Form is subject to the | ||||||
|  |       terms of the Mozilla Public License, v. | ||||||
|  |       2.0. If a copy of the MPL was not | ||||||
|  |       distributed with this file, You can | ||||||
|  |       obtain one at | ||||||
|  |       http://mozilla.org/MPL/2.0/. | ||||||
|  |  | ||||||
|  | If it is not possible or desirable to put the notice in a particular file, | ||||||
|  | then You may include the notice in a location (such as a LICENSE file in a | ||||||
|  | relevant directory) where a recipient would be likely to look for such a | ||||||
|  | notice. | ||||||
|  |  | ||||||
|  | You may add additional accurate notices of copyright ownership. | ||||||
|  |  | ||||||
|  | Exhibit B - "Incompatible With Secondary Licenses" Notice | ||||||
|  |  | ||||||
|  |       This Source Code Form is "Incompatible | ||||||
|  |       With Secondary Licenses", as defined by | ||||||
|  |       the Mozilla Public License, v. 2.0. | ||||||
|  |  | ||||||
| @@ -17,7 +17,7 @@ import ( | |||||||
| 	"github.com/hashicorp/go-multierror" | 	"github.com/hashicorp/go-multierror" | ||||||
| 	"github.com/hashicorp/hcl" | 	"github.com/hashicorp/hcl" | ||||||
| 	"github.com/hashicorp/hcl/hcl/ast" | 	"github.com/hashicorp/hcl/hcl/ast" | ||||||
| 	"github.com/hashicorp/vault/helper/metricsutil" | 	"github.com/hashicorp/shared-secure-libs/metricsutil" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/parseutil" | 	"github.com/hashicorp/vault/sdk/helper/parseutil" | ||||||
| 	"github.com/mitchellh/cli" | 	"github.com/mitchellh/cli" | ||||||
| 	"google.golang.org/api/option" | 	"google.golang.org/api/option" | ||||||
| @@ -11,8 +11,8 @@ import ( | |||||||
| 	"strconv" | 	"strconv" | ||||||
| 
 | 
 | ||||||
| 	"github.com/hashicorp/errwrap" | 	"github.com/hashicorp/errwrap" | ||||||
| 	"github.com/hashicorp/vault/internalshared/configutil" | 	"github.com/hashicorp/shared-secure-libs/configutil" | ||||||
| 	"github.com/hashicorp/vault/internalshared/reloadutil" | 	"github.com/hashicorp/shared-secure-libs/reloadutil" | ||||||
| 	"github.com/hashicorp/vault/sdk/helper/tlsutil" | 	"github.com/hashicorp/vault/sdk/helper/tlsutil" | ||||||
| 	"github.com/jefferai/isbadcipher" | 	"github.com/jefferai/isbadcipher" | ||||||
| 	"github.com/mitchellh/cli" | 	"github.com/mitchellh/cli" | ||||||
							
								
								
									
										89
									
								
								vendor/github.com/hashicorp/shared-secure-libs/metricsutil/wrapped_metrics.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								vendor/github.com/hashicorp/shared-secure-libs/metricsutil/wrapped_metrics.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,89 @@ | |||||||
|  | package metricsutil | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"sync/atomic" | ||||||
|  | 	"time" | ||||||
|  |  | ||||||
|  | 	metrics "github.com/armon/go-metrics" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // ClusterMetricSink serves as a shim around go-metrics | ||||||
|  | // and inserts a "cluster" label. | ||||||
|  | // | ||||||
|  | // It also provides a mechanism to limit the cardinality of the labels on a gauge | ||||||
|  | // (at each reporting interval, which isn't sufficient if there is variability in which | ||||||
|  | // labels are the top N) and a backoff mechanism for gauge computation. | ||||||
|  | type ClusterMetricSink struct { | ||||||
|  | 	// ClusterName is either the cluster ID, or a name provided | ||||||
|  | 	// in the telemetry configuration stanza. | ||||||
|  | 	// | ||||||
|  | 	// Because it may be set after the Core is initialized, we need | ||||||
|  | 	// to protect against concurrent access. | ||||||
|  | 	ClusterName atomic.Value | ||||||
|  |  | ||||||
|  | 	MaxGaugeCardinality int | ||||||
|  | 	GaugeInterval       time.Duration | ||||||
|  |  | ||||||
|  | 	// Sink is the go-metrics instance to send to. | ||||||
|  | 	Sink metrics.MetricSink | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Convenience alias | ||||||
|  | type Label = metrics.Label | ||||||
|  |  | ||||||
|  | func (m *ClusterMetricSink) SetGaugeWithLabels(key []string, val float32, labels []Label) { | ||||||
|  | 	m.Sink.SetGaugeWithLabels(key, val, | ||||||
|  | 		append(labels, Label{"cluster", m.ClusterName.Load().(string)})) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (m *ClusterMetricSink) IncrCounterWithLabels(key []string, val float32, labels []Label) { | ||||||
|  | 	m.Sink.IncrCounterWithLabels(key, val, | ||||||
|  | 		append(labels, Label{"cluster", m.ClusterName.Load().(string)})) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (m *ClusterMetricSink) AddSampleWithLabels(key []string, val float32, labels []Label) { | ||||||
|  | 	m.Sink.AddSampleWithLabels(key, val, | ||||||
|  | 		append(labels, Label{"cluster", m.ClusterName.Load().(string)})) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (m *ClusterMetricSink) AddDurationWithLabels(key []string, d time.Duration, labels []Label) { | ||||||
|  | 	val := float32(d) / float32(time.Millisecond) | ||||||
|  | 	m.AddSampleWithLabels(key, val, labels) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (m *ClusterMetricSink) MeasureSinceWithLabels(key []string, start time.Time, labels []Label) { | ||||||
|  | 	elapsed := time.Now().Sub(start) | ||||||
|  | 	val := float32(elapsed) / float32(time.Millisecond) | ||||||
|  | 	m.AddSampleWithLabels(key, val, labels) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // BlackholeSink is a default suitable for use in unit tests. | ||||||
|  | func BlackholeSink() *ClusterMetricSink { | ||||||
|  | 	sink, _ := metrics.New(metrics.DefaultConfig(""), | ||||||
|  | 		&metrics.BlackholeSink{}) | ||||||
|  | 	cms := &ClusterMetricSink{ | ||||||
|  | 		ClusterName: atomic.Value{}, | ||||||
|  | 		Sink:        sink, | ||||||
|  | 	} | ||||||
|  | 	cms.ClusterName.Store("") | ||||||
|  | 	return cms | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func NewClusterMetricSink(clusterName string, sink metrics.MetricSink) *ClusterMetricSink { | ||||||
|  | 	cms := &ClusterMetricSink{ | ||||||
|  | 		ClusterName: atomic.Value{}, | ||||||
|  | 		Sink:        sink, | ||||||
|  | 	} | ||||||
|  | 	cms.ClusterName.Store(clusterName) | ||||||
|  | 	return cms | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // SetDefaultClusterName changes the cluster name from its default value, | ||||||
|  | // if it has not previously been configured. | ||||||
|  | func (m *ClusterMetricSink) SetDefaultClusterName(clusterName string) { | ||||||
|  | 	// This is not a true compare-and-swap, but it should be | ||||||
|  | 	// consistent enough for normal uses | ||||||
|  | 	if m.ClusterName.Load().(string) == "" { | ||||||
|  | 		m.ClusterName.Store(clusterName) | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										18
									
								
								vendor/github.com/json-iterator/go/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/json-iterator/go/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,5 +1,5 @@ | |||||||
| [](https://sourcegraph.com/github.com/json-iterator/go?badge) | [](https://sourcegraph.com/github.com/json-iterator/go?badge) | ||||||
| [](http://godoc.org/github.com/json-iterator/go) | [](https://pkg.go.dev/github.com/json-iterator/go) | ||||||
| [](https://travis-ci.org/json-iterator/go) | [](https://travis-ci.org/json-iterator/go) | ||||||
| [](https://codecov.io/gh/json-iterator/go) | [](https://codecov.io/gh/json-iterator/go) | ||||||
| [](https://goreportcard.com/report/github.com/json-iterator/go) | [](https://goreportcard.com/report/github.com/json-iterator/go) | ||||||
| @@ -19,7 +19,7 @@ Source code: https://github.com/json-iterator/go-benchmark/blob/master/src/githu | |||||||
| Raw Result (easyjson requires static code generation) | Raw Result (easyjson requires static code generation) | ||||||
|  |  | ||||||
| |                 | ns/op       | allocation bytes | allocation times | | |                 | ns/op       | allocation bytes | allocation times | | ||||||
| | --- | --- | --- | --- | | | --------------- | ----------- | ---------------- | ---------------- | | ||||||
| | std decode      | 35510 ns/op | 1960 B/op        | 99 allocs/op     | | | std decode      | 35510 ns/op | 1960 B/op        | 99 allocs/op     | | ||||||
| | easyjson decode | 8499 ns/op  | 160 B/op         | 4 allocs/op      | | | easyjson decode | 8499 ns/op  | 160 B/op         | 4 allocs/op      | | ||||||
| | jsoniter decode | 5623 ns/op  | 160 B/op         | 3 allocs/op      | | | jsoniter decode | 5623 ns/op  | 160 B/op         | 3 allocs/op      | | ||||||
| @@ -44,7 +44,7 @@ json.Marshal(&data) | |||||||
| with | with | ||||||
|  |  | ||||||
| ```go | ```go | ||||||
| import "github.com/json-iterator/go" | import jsoniter "github.com/json-iterator/go" | ||||||
|  |  | ||||||
| var json = jsoniter.ConfigCompatibleWithStandardLibrary | var json = jsoniter.ConfigCompatibleWithStandardLibrary | ||||||
| json.Marshal(&data) | json.Marshal(&data) | ||||||
| @@ -60,7 +60,7 @@ json.Unmarshal(input, &data) | |||||||
| with | with | ||||||
|  |  | ||||||
| ```go | ```go | ||||||
| import "github.com/json-iterator/go" | import jsoniter "github.com/json-iterator/go" | ||||||
|  |  | ||||||
| var json = jsoniter.ConfigCompatibleWithStandardLibrary | var json = jsoniter.ConfigCompatibleWithStandardLibrary | ||||||
| json.Unmarshal(input, &data) | json.Unmarshal(input, &data) | ||||||
| @@ -78,10 +78,10 @@ go get github.com/json-iterator/go | |||||||
|  |  | ||||||
| Contributors | Contributors | ||||||
|  |  | ||||||
| * [thockin](https://github.com/thockin)  | - [thockin](https://github.com/thockin) | ||||||
| * [mattn](https://github.com/mattn) | - [mattn](https://github.com/mattn) | ||||||
| * [cch123](https://github.com/cch123) | - [cch123](https://github.com/cch123) | ||||||
| * [Oleg Shaldybin](https://github.com/olegshaldybin) | - [Oleg Shaldybin](https://github.com/olegshaldybin) | ||||||
| * [Jason Toffaletti](https://github.com/toffaletti) | - [Jason Toffaletti](https://github.com/toffaletti) | ||||||
|  |  | ||||||
| Report issue or pull request, or email taowen@gmail.com, or [](https://gitter.im/json-iterator/Lobby) | Report issue or pull request, or email taowen@gmail.com, or [](https://gitter.im/json-iterator/Lobby) | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								vendor/github.com/json-iterator/go/any_str.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/json-iterator/go/any_str.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -64,7 +64,6 @@ func (any *stringAny) ToInt64() int64 { | |||||||
|  |  | ||||||
| 	flag := 1 | 	flag := 1 | ||||||
| 	startPos := 0 | 	startPos := 0 | ||||||
| 	endPos := 0 |  | ||||||
| 	if any.val[0] == '+' || any.val[0] == '-' { | 	if any.val[0] == '+' || any.val[0] == '-' { | ||||||
| 		startPos = 1 | 		startPos = 1 | ||||||
| 	} | 	} | ||||||
| @@ -73,6 +72,7 @@ func (any *stringAny) ToInt64() int64 { | |||||||
| 		flag = -1 | 		flag = -1 | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	endPos := startPos | ||||||
| 	for i := startPos; i < len(any.val); i++ { | 	for i := startPos; i < len(any.val); i++ { | ||||||
| 		if any.val[i] >= '0' && any.val[i] <= '9' { | 		if any.val[i] >= '0' && any.val[i] <= '9' { | ||||||
| 			endPos = i + 1 | 			endPos = i + 1 | ||||||
| @@ -98,7 +98,6 @@ func (any *stringAny) ToUint64() uint64 { | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	startPos := 0 | 	startPos := 0 | ||||||
| 	endPos := 0 |  | ||||||
|  |  | ||||||
| 	if any.val[0] == '-' { | 	if any.val[0] == '-' { | ||||||
| 		return 0 | 		return 0 | ||||||
| @@ -107,6 +106,7 @@ func (any *stringAny) ToUint64() uint64 { | |||||||
| 		startPos = 1 | 		startPos = 1 | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	endPos := startPos | ||||||
| 	for i := startPos; i < len(any.val); i++ { | 	for i := startPos; i < len(any.val); i++ { | ||||||
| 		if any.val[i] >= '0' && any.val[i] <= '9' { | 		if any.val[i] >= '0' && any.val[i] <= '9' { | ||||||
| 			endPos = i + 1 | 			endPos = i + 1 | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								vendor/github.com/json-iterator/go/config.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/json-iterator/go/config.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -183,11 +183,11 @@ func (cfg *frozenConfig) validateJsonRawMessage(extension EncoderExtension) { | |||||||
| 	encoder := &funcEncoder{func(ptr unsafe.Pointer, stream *Stream) { | 	encoder := &funcEncoder{func(ptr unsafe.Pointer, stream *Stream) { | ||||||
| 		rawMessage := *(*json.RawMessage)(ptr) | 		rawMessage := *(*json.RawMessage)(ptr) | ||||||
| 		iter := cfg.BorrowIterator([]byte(rawMessage)) | 		iter := cfg.BorrowIterator([]byte(rawMessage)) | ||||||
|  | 		defer cfg.ReturnIterator(iter) | ||||||
| 		iter.Read() | 		iter.Read() | ||||||
| 		if iter.Error != nil { | 		if iter.Error != nil && iter.Error != io.EOF { | ||||||
| 			stream.WriteRaw("null") | 			stream.WriteRaw("null") | ||||||
| 		} else { | 		} else { | ||||||
| 			cfg.ReturnIterator(iter) |  | ||||||
| 			stream.WriteRaw(string(rawMessage)) | 			stream.WriteRaw(string(rawMessage)) | ||||||
| 		} | 		} | ||||||
| 	}, func(ptr unsafe.Pointer) bool { | 	}, func(ptr unsafe.Pointer) bool { | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								vendor/github.com/json-iterator/go/iter_object.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/json-iterator/go/iter_object.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -150,7 +150,7 @@ func (iter *Iterator) ReadObjectCB(callback func(*Iterator, string) bool) bool { | |||||||
| 		if c == '}' { | 		if c == '}' { | ||||||
| 			return iter.decrementDepth() | 			return iter.decrementDepth() | ||||||
| 		} | 		} | ||||||
| 		iter.ReportError("ReadObjectCB", `expect " after }, but found `+string([]byte{c})) | 		iter.ReportError("ReadObjectCB", `expect " after {, but found `+string([]byte{c})) | ||||||
| 		iter.decrementDepth() | 		iter.decrementDepth() | ||||||
| 		return false | 		return false | ||||||
| 	} | 	} | ||||||
| @@ -206,7 +206,7 @@ func (iter *Iterator) ReadMapCB(callback func(*Iterator, string) bool) bool { | |||||||
| 		if c == '}' { | 		if c == '}' { | ||||||
| 			return iter.decrementDepth() | 			return iter.decrementDepth() | ||||||
| 		} | 		} | ||||||
| 		iter.ReportError("ReadMapCB", `expect " after }, but found `+string([]byte{c})) | 		iter.ReportError("ReadMapCB", `expect " after {, but found `+string([]byte{c})) | ||||||
| 		iter.decrementDepth() | 		iter.decrementDepth() | ||||||
| 		return false | 		return false | ||||||
| 	} | 	} | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								vendor/github.com/json-iterator/go/reflect_extension.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/json-iterator/go/reflect_extension.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -475,7 +475,7 @@ func calcFieldNames(originalFieldName string, tagProvidedFieldName string, whole | |||||||
| 		fieldNames = []string{tagProvidedFieldName} | 		fieldNames = []string{tagProvidedFieldName} | ||||||
| 	} | 	} | ||||||
| 	// private? | 	// private? | ||||||
| 	isNotExported := unicode.IsLower(rune(originalFieldName[0])) | 	isNotExported := unicode.IsLower(rune(originalFieldName[0])) || originalFieldName[0] == '_' | ||||||
| 	if isNotExported { | 	if isNotExported { | ||||||
| 		fieldNames = []string{} | 		fieldNames = []string{} | ||||||
| 	} | 	} | ||||||
|   | |||||||
							
								
								
									
										58
									
								
								vendor/github.com/json-iterator/go/reflect_map.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										58
									
								
								vendor/github.com/json-iterator/go/reflect_map.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -49,20 +49,7 @@ func decoderOfMapKey(ctx *ctx, typ reflect2.Type) ValDecoder { | |||||||
| 			return decoder | 			return decoder | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	switch typ.Kind() { |  | ||||||
| 	case reflect.String: |  | ||||||
| 		return decoderOfType(ctx, reflect2.DefaultTypeOfKind(reflect.String)) |  | ||||||
| 	case reflect.Bool, |  | ||||||
| 		reflect.Uint8, reflect.Int8, |  | ||||||
| 		reflect.Uint16, reflect.Int16, |  | ||||||
| 		reflect.Uint32, reflect.Int32, |  | ||||||
| 		reflect.Uint64, reflect.Int64, |  | ||||||
| 		reflect.Uint, reflect.Int, |  | ||||||
| 		reflect.Float32, reflect.Float64, |  | ||||||
| 		reflect.Uintptr: |  | ||||||
| 		typ = reflect2.DefaultTypeOfKind(typ.Kind()) |  | ||||||
| 		return &numericMapKeyDecoder{decoderOfType(ctx, typ)} |  | ||||||
| 	default: |  | ||||||
| 	ptrType := reflect2.PtrTo(typ) | 	ptrType := reflect2.PtrTo(typ) | ||||||
| 	if ptrType.Implements(unmarshalerType) { | 	if ptrType.Implements(unmarshalerType) { | ||||||
| 		return &referenceDecoder{ | 		return &referenceDecoder{ | ||||||
| @@ -88,6 +75,21 @@ func decoderOfMapKey(ctx *ctx, typ reflect2.Type) ValDecoder { | |||||||
| 			valType: typ, | 			valType: typ, | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	switch typ.Kind() { | ||||||
|  | 	case reflect.String: | ||||||
|  | 		return decoderOfType(ctx, reflect2.DefaultTypeOfKind(reflect.String)) | ||||||
|  | 	case reflect.Bool, | ||||||
|  | 		reflect.Uint8, reflect.Int8, | ||||||
|  | 		reflect.Uint16, reflect.Int16, | ||||||
|  | 		reflect.Uint32, reflect.Int32, | ||||||
|  | 		reflect.Uint64, reflect.Int64, | ||||||
|  | 		reflect.Uint, reflect.Int, | ||||||
|  | 		reflect.Float32, reflect.Float64, | ||||||
|  | 		reflect.Uintptr: | ||||||
|  | 		typ = reflect2.DefaultTypeOfKind(typ.Kind()) | ||||||
|  | 		return &numericMapKeyDecoder{decoderOfType(ctx, typ)} | ||||||
|  | 	default: | ||||||
| 		return &lazyErrorDecoder{err: fmt.Errorf("unsupported map key type: %v", typ)} | 		return &lazyErrorDecoder{err: fmt.Errorf("unsupported map key type: %v", typ)} | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| @@ -103,6 +105,19 @@ func encoderOfMapKey(ctx *ctx, typ reflect2.Type) ValEncoder { | |||||||
| 			return encoder | 			return encoder | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	if typ == textMarshalerType { | ||||||
|  | 		return &directTextMarshalerEncoder{ | ||||||
|  | 			stringEncoder: ctx.EncoderOf(reflect2.TypeOf("")), | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	if typ.Implements(textMarshalerType) { | ||||||
|  | 		return &textMarshalerEncoder{ | ||||||
|  | 			valType:       typ, | ||||||
|  | 			stringEncoder: ctx.EncoderOf(reflect2.TypeOf("")), | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	switch typ.Kind() { | 	switch typ.Kind() { | ||||||
| 	case reflect.String: | 	case reflect.String: | ||||||
| 		return encoderOfType(ctx, reflect2.DefaultTypeOfKind(reflect.String)) | 		return encoderOfType(ctx, reflect2.DefaultTypeOfKind(reflect.String)) | ||||||
| @@ -117,17 +132,6 @@ func encoderOfMapKey(ctx *ctx, typ reflect2.Type) ValEncoder { | |||||||
| 		typ = reflect2.DefaultTypeOfKind(typ.Kind()) | 		typ = reflect2.DefaultTypeOfKind(typ.Kind()) | ||||||
| 		return &numericMapKeyEncoder{encoderOfType(ctx, typ)} | 		return &numericMapKeyEncoder{encoderOfType(ctx, typ)} | ||||||
| 	default: | 	default: | ||||||
| 		if typ == textMarshalerType { |  | ||||||
| 			return &directTextMarshalerEncoder{ |  | ||||||
| 				stringEncoder: ctx.EncoderOf(reflect2.TypeOf("")), |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		if typ.Implements(textMarshalerType) { |  | ||||||
| 			return &textMarshalerEncoder{ |  | ||||||
| 				valType:       typ, |  | ||||||
| 				stringEncoder: ctx.EncoderOf(reflect2.TypeOf("")), |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
| 		if typ.Kind() == reflect.Interface { | 		if typ.Kind() == reflect.Interface { | ||||||
| 			return &dynamicMapKeyEncoder{ctx, typ} | 			return &dynamicMapKeyEncoder{ctx, typ} | ||||||
| 		} | 		} | ||||||
| @@ -163,10 +167,6 @@ func (decoder *mapDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) { | |||||||
| 	if c == '}' { | 	if c == '}' { | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	if c != '"' { |  | ||||||
| 		iter.ReportError("ReadMapCB", `expect " after }, but found `+string([]byte{c})) |  | ||||||
| 		return |  | ||||||
| 	} |  | ||||||
| 	iter.unreadByte() | 	iter.unreadByte() | ||||||
| 	key := decoder.keyType.UnsafeNew() | 	key := decoder.keyType.UnsafeNew() | ||||||
| 	decoder.keyDecoder.Decode(key, iter) | 	decoder.keyDecoder.Decode(key, iter) | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								vendor/github.com/json-iterator/go/reflect_optional.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/json-iterator/go/reflect_optional.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,7 +2,6 @@ package jsoniter | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"github.com/modern-go/reflect2" | 	"github.com/modern-go/reflect2" | ||||||
| 	"reflect" |  | ||||||
| 	"unsafe" | 	"unsafe" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -10,9 +9,6 @@ func decoderOfOptional(ctx *ctx, typ reflect2.Type) ValDecoder { | |||||||
| 	ptrType := typ.(*reflect2.UnsafePtrType) | 	ptrType := typ.(*reflect2.UnsafePtrType) | ||||||
| 	elemType := ptrType.Elem() | 	elemType := ptrType.Elem() | ||||||
| 	decoder := decoderOfType(ctx, elemType) | 	decoder := decoderOfType(ctx, elemType) | ||||||
| 	if ctx.prefix == "" && elemType.Kind() == reflect.Ptr { |  | ||||||
| 		return &dereferenceDecoder{elemType, decoder} |  | ||||||
| 	} |  | ||||||
| 	return &OptionalDecoder{elemType, decoder} | 	return &OptionalDecoder{elemType, decoder} | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										22
									
								
								vendor/github.com/json-iterator/go/reflect_struct_decoder.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/json-iterator/go/reflect_struct_decoder.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -507,7 +507,7 @@ func (decoder *generalStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) | |||||||
| 	for c = ','; c == ','; c = iter.nextToken() { | 	for c = ','; c == ','; c = iter.nextToken() { | ||||||
| 		decoder.decodeOneField(ptr, iter) | 		decoder.decodeOneField(ptr, iter) | ||||||
| 	} | 	} | ||||||
| 	if iter.Error != nil && iter.Error != io.EOF { | 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||||
| 	} | 	} | ||||||
| 	if c != '}' { | 	if c != '}' { | ||||||
| @@ -588,7 +588,7 @@ func (decoder *oneFieldStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) | |||||||
| 			break | 			break | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if iter.Error != nil && iter.Error != io.EOF { | 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||||
| 	} | 	} | ||||||
| 	iter.decrementDepth() | 	iter.decrementDepth() | ||||||
| @@ -622,7 +622,7 @@ func (decoder *twoFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator | |||||||
| 			break | 			break | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if iter.Error != nil && iter.Error != io.EOF { | 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||||
| 	} | 	} | ||||||
| 	iter.decrementDepth() | 	iter.decrementDepth() | ||||||
| @@ -660,7 +660,7 @@ func (decoder *threeFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterat | |||||||
| 			break | 			break | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if iter.Error != nil && iter.Error != io.EOF { | 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||||
| 	} | 	} | ||||||
| 	iter.decrementDepth() | 	iter.decrementDepth() | ||||||
| @@ -702,7 +702,7 @@ func (decoder *fourFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterato | |||||||
| 			break | 			break | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if iter.Error != nil && iter.Error != io.EOF { | 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||||
| 	} | 	} | ||||||
| 	iter.decrementDepth() | 	iter.decrementDepth() | ||||||
| @@ -748,7 +748,7 @@ func (decoder *fiveFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterato | |||||||
| 			break | 			break | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if iter.Error != nil && iter.Error != io.EOF { | 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||||
| 	} | 	} | ||||||
| 	iter.decrementDepth() | 	iter.decrementDepth() | ||||||
| @@ -798,7 +798,7 @@ func (decoder *sixFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator | |||||||
| 			break | 			break | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if iter.Error != nil && iter.Error != io.EOF { | 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||||
| 	} | 	} | ||||||
| 	iter.decrementDepth() | 	iter.decrementDepth() | ||||||
| @@ -852,7 +852,7 @@ func (decoder *sevenFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterat | |||||||
| 			break | 			break | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if iter.Error != nil && iter.Error != io.EOF { | 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||||
| 	} | 	} | ||||||
| 	iter.decrementDepth() | 	iter.decrementDepth() | ||||||
| @@ -910,7 +910,7 @@ func (decoder *eightFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterat | |||||||
| 			break | 			break | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if iter.Error != nil && iter.Error != io.EOF { | 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||||
| 	} | 	} | ||||||
| 	iter.decrementDepth() | 	iter.decrementDepth() | ||||||
| @@ -972,7 +972,7 @@ func (decoder *nineFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterato | |||||||
| 			break | 			break | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if iter.Error != nil && iter.Error != io.EOF { | 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||||
| 	} | 	} | ||||||
| 	iter.decrementDepth() | 	iter.decrementDepth() | ||||||
| @@ -1038,7 +1038,7 @@ func (decoder *tenFieldsStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator | |||||||
| 			break | 			break | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if iter.Error != nil && iter.Error != io.EOF { | 	if iter.Error != nil && iter.Error != io.EOF && len(decoder.typ.Type1().Name()) != 0 { | ||||||
| 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | 		iter.Error = fmt.Errorf("%v.%s", decoder.typ, iter.Error.Error()) | ||||||
| 	} | 	} | ||||||
| 	iter.decrementDepth() | 	iter.decrementDepth() | ||||||
|   | |||||||
							
								
								
									
										5
									
								
								vendor/github.com/json-iterator/go/stream.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/json-iterator/go/stream.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -103,14 +103,14 @@ func (stream *Stream) Flush() error { | |||||||
| 	if stream.Error != nil { | 	if stream.Error != nil { | ||||||
| 		return stream.Error | 		return stream.Error | ||||||
| 	} | 	} | ||||||
| 	n, err := stream.out.Write(stream.buf) | 	_, err := stream.out.Write(stream.buf) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		if stream.Error == nil { | 		if stream.Error == nil { | ||||||
| 			stream.Error = err | 			stream.Error = err | ||||||
| 		} | 		} | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 	stream.buf = stream.buf[n:] | 	stream.buf = stream.buf[:0] | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -177,7 +177,6 @@ func (stream *Stream) WriteEmptyObject() { | |||||||
| func (stream *Stream) WriteMore() { | func (stream *Stream) WriteMore() { | ||||||
| 	stream.writeByte(',') | 	stream.writeByte(',') | ||||||
| 	stream.writeIndention(0) | 	stream.writeIndention(0) | ||||||
| 	stream.Flush() |  | ||||||
| } | } | ||||||
|  |  | ||||||
| // WriteArrayStart write [ with possible indention | // WriteArrayStart write [ with possible indention | ||||||
|   | |||||||
							
								
								
									
										10
									
								
								vendor/github.com/mitchellh/cli/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										10
									
								
								vendor/github.com/mitchellh/cli/.travis.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,10 +2,14 @@ sudo: false | |||||||
|  |  | ||||||
| language: go | language: go | ||||||
|  |  | ||||||
|  | env: | ||||||
|  |   - GO111MODULE=on | ||||||
|  |  | ||||||
| go: | go: | ||||||
|   - "1.8" |   - "1.11" | ||||||
|   - "1.9" |   - "1.12" | ||||||
|   - "1.10" |   - "1.13" | ||||||
|  |   - "1.14" | ||||||
|  |  | ||||||
| branches: | branches: | ||||||
|   only: |   only: | ||||||
|   | |||||||
							
								
								
									
										5
									
								
								vendor/github.com/mitchellh/cli/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/mitchellh/cli/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -12,9 +12,6 @@ testrace: | |||||||
|  |  | ||||||
| # updatedeps installs all the dependencies to run and build | # updatedeps installs all the dependencies to run and build | ||||||
| updatedeps: | updatedeps: | ||||||
| 	go list ./... \ | 	go mod download | ||||||
| 		| xargs go list -f '{{ join .Deps "\n" }}{{ printf "\n" }}{{ join .TestImports "\n" }}' \ |  | ||||||
| 		| grep -v github.com/mitchellh/cli \ |  | ||||||
| 		| xargs go get -f -u -v |  | ||||||
|  |  | ||||||
| .PHONY: test testrace updatedeps | .PHONY: test testrace updatedeps | ||||||
|   | |||||||
							
								
								
									
										51
									
								
								vendor/github.com/mitchellh/cli/cli.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										51
									
								
								vendor/github.com/mitchellh/cli/cli.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -3,6 +3,7 @@ package cli | |||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io" | 	"io" | ||||||
|  | 	"io/ioutil" | ||||||
| 	"os" | 	"os" | ||||||
| 	"regexp" | 	"regexp" | ||||||
| 	"sort" | 	"sort" | ||||||
| @@ -109,18 +110,23 @@ type CLI struct { | |||||||
| 	AutocompleteGlobalFlags    complete.Flags | 	AutocompleteGlobalFlags    complete.Flags | ||||||
| 	autocompleteInstaller      autocompleteInstaller // For tests | 	autocompleteInstaller      autocompleteInstaller // For tests | ||||||
|  |  | ||||||
| 	// HelpFunc and HelpWriter are used to output help information, if |  | ||||||
| 	// requested. |  | ||||||
| 	// |  | ||||||
| 	// HelpFunc is the function called to generate the generic help | 	// HelpFunc is the function called to generate the generic help | ||||||
| 	// text that is shown if help must be shown for the CLI that doesn't | 	// text that is shown if help must be shown for the CLI that doesn't | ||||||
| 	// pertain to a specific command. | 	// pertain to a specific command. | ||||||
| 	// |  | ||||||
| 	// HelpWriter is the Writer where the help text is outputted to. If |  | ||||||
| 	// not specified, it will default to Stderr. |  | ||||||
| 	HelpFunc HelpFunc | 	HelpFunc HelpFunc | ||||||
|  |  | ||||||
|  | 	// HelpWriter is used to print help text and version when requested. | ||||||
|  | 	// Defaults to os.Stderr for backwards compatibility. | ||||||
|  | 	// It is recommended that you set HelpWriter to os.Stdout, and | ||||||
|  | 	// ErrorWriter to os.Stderr. | ||||||
| 	HelpWriter io.Writer | 	HelpWriter io.Writer | ||||||
|  |  | ||||||
|  | 	// ErrorWriter used to output errors when a command can not be run. | ||||||
|  | 	// Defaults to the value of HelpWriter for backwards compatibility. | ||||||
|  | 	// It is recommended that you set HelpWriter to os.Stdout, and | ||||||
|  | 	// ErrorWriter to os.Stderr. | ||||||
|  | 	ErrorWriter io.Writer | ||||||
|  |  | ||||||
| 	//--------------------------------------------------------------- | 	//--------------------------------------------------------------- | ||||||
| 	// Internal fields set automatically | 	// Internal fields set automatically | ||||||
|  |  | ||||||
| @@ -228,7 +234,7 @@ func (c *CLI) Run() (int, error) { | |||||||
| 	// implementation. If the command is invalid or blank, it is an error. | 	// implementation. If the command is invalid or blank, it is an error. | ||||||
| 	raw, ok := c.commandTree.Get(c.Subcommand()) | 	raw, ok := c.commandTree.Get(c.Subcommand()) | ||||||
| 	if !ok { | 	if !ok { | ||||||
| 		c.HelpWriter.Write([]byte(c.HelpFunc(c.helpCommands(c.subcommandParent())) + "\n")) | 		c.ErrorWriter.Write([]byte(c.HelpFunc(c.helpCommands(c.subcommandParent())) + "\n")) | ||||||
| 		return 127, nil | 		return 127, nil | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -239,23 +245,23 @@ func (c *CLI) Run() (int, error) { | |||||||
|  |  | ||||||
| 	// If we've been instructed to just print the help, then print it | 	// If we've been instructed to just print the help, then print it | ||||||
| 	if c.IsHelp() { | 	if c.IsHelp() { | ||||||
| 		c.commandHelp(command) | 		c.commandHelp(c.HelpWriter, command) | ||||||
| 		return 0, nil | 		return 0, nil | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// If there is an invalid flag, then error | 	// If there is an invalid flag, then error | ||||||
| 	if len(c.topFlags) > 0 { | 	if len(c.topFlags) > 0 { | ||||||
| 		c.HelpWriter.Write([]byte( | 		c.ErrorWriter.Write([]byte( | ||||||
| 			"Invalid flags before the subcommand. If these flags are for\n" + | 			"Invalid flags before the subcommand. If these flags are for\n" + | ||||||
| 				"the subcommand, please put them after the subcommand.\n\n")) | 				"the subcommand, please put them after the subcommand.\n\n")) | ||||||
| 		c.commandHelp(command) | 		c.commandHelp(c.ErrorWriter, command) | ||||||
| 		return 1, nil | 		return 1, nil | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	code := command.Run(c.SubcommandArgs()) | 	code := command.Run(c.SubcommandArgs()) | ||||||
| 	if code == RunResultHelp { | 	if code == RunResultHelp { | ||||||
| 		// Requesting help | 		// Requesting help | ||||||
| 		c.commandHelp(command) | 		c.commandHelp(c.ErrorWriter, command) | ||||||
| 		return 1, nil | 		return 1, nil | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -310,6 +316,9 @@ func (c *CLI) init() { | |||||||
| 	if c.HelpWriter == nil { | 	if c.HelpWriter == nil { | ||||||
| 		c.HelpWriter = os.Stderr | 		c.HelpWriter = os.Stderr | ||||||
| 	} | 	} | ||||||
|  | 	if c.ErrorWriter == nil { | ||||||
|  | 		c.ErrorWriter = c.HelpWriter | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	// Build our hidden commands | 	// Build our hidden commands | ||||||
| 	if len(c.HiddenCommands) > 0 { | 	if len(c.HiddenCommands) > 0 { | ||||||
| @@ -395,6 +404,16 @@ func (c *CLI) initAutocomplete() { | |||||||
| 		c.autocompleteInstaller = &realAutocompleteInstaller{} | 		c.autocompleteInstaller = &realAutocompleteInstaller{} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	// We first set c.autocomplete to a noop autocompleter that outputs | ||||||
|  | 	// to nul so that we can detect if we're autocompleting or not. If we're | ||||||
|  | 	// not, then we do nothing. This saves a LOT of compute cycles since | ||||||
|  | 	// initAutoCompleteSub has to walk every command. | ||||||
|  | 	c.autocomplete = complete.New(c.Name, complete.Command{}) | ||||||
|  | 	c.autocomplete.Out = ioutil.Discard | ||||||
|  | 	if !c.autocomplete.Complete() { | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	// Build the root command | 	// Build the root command | ||||||
| 	cmd := c.initAutocompleteSub("") | 	cmd := c.initAutocompleteSub("") | ||||||
|  |  | ||||||
| @@ -483,7 +502,7 @@ func (c *CLI) initAutocompleteSub(prefix string) complete.Command { | |||||||
| 	return cmd | 	return cmd | ||||||
| } | } | ||||||
|  |  | ||||||
| func (c *CLI) commandHelp(command Command) { | func (c *CLI) commandHelp(out io.Writer, command Command) { | ||||||
| 	// Get the template to use | 	// Get the template to use | ||||||
| 	tpl := strings.TrimSpace(defaultHelpTemplate) | 	tpl := strings.TrimSpace(defaultHelpTemplate) | ||||||
| 	if t, ok := command.(CommandHelpTemplate); ok { | 	if t, ok := command.(CommandHelpTemplate); ok { | ||||||
| @@ -533,12 +552,12 @@ func (c *CLI) commandHelp(command Command) { | |||||||
| 			// Get the command | 			// Get the command | ||||||
| 			raw, ok := subcommands[k] | 			raw, ok := subcommands[k] | ||||||
| 			if !ok { | 			if !ok { | ||||||
| 				c.HelpWriter.Write([]byte(fmt.Sprintf( | 				c.ErrorWriter.Write([]byte(fmt.Sprintf( | ||||||
| 					"Error getting subcommand %q", k))) | 					"Error getting subcommand %q", k))) | ||||||
| 			} | 			} | ||||||
| 			sub, err := raw() | 			sub, err := raw() | ||||||
| 			if err != nil { | 			if err != nil { | ||||||
| 				c.HelpWriter.Write([]byte(fmt.Sprintf( | 				c.ErrorWriter.Write([]byte(fmt.Sprintf( | ||||||
| 					"Error instantiating %q: %s", k, err))) | 					"Error instantiating %q: %s", k, err))) | ||||||
| 			} | 			} | ||||||
|  |  | ||||||
| @@ -559,13 +578,13 @@ func (c *CLI) commandHelp(command Command) { | |||||||
| 	data["Subcommands"] = subcommandsTpl | 	data["Subcommands"] = subcommandsTpl | ||||||
|  |  | ||||||
| 	// Write | 	// Write | ||||||
| 	err = t.Execute(c.HelpWriter, data) | 	err = t.Execute(out, data) | ||||||
| 	if err == nil { | 	if err == nil { | ||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// An error, just output... | 	// An error, just output... | ||||||
| 	c.HelpWriter.Write([]byte(fmt.Sprintf( | 	c.ErrorWriter.Write([]byte(fmt.Sprintf( | ||||||
| 		"Internal error rendering help: %s", err))) | 		"Internal error rendering help: %s", err))) | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								vendor/github.com/mitchellh/cli/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/mitchellh/cli/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,5 +1,7 @@ | |||||||
| module github.com/mitchellh/cli | module github.com/mitchellh/cli | ||||||
|  |  | ||||||
|  | go 1.11 | ||||||
|  |  | ||||||
| require ( | require ( | ||||||
| 	github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 | 	github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 | ||||||
| 	github.com/bgentry/speakeasy v0.1.0 | 	github.com/bgentry/speakeasy v0.1.0 | ||||||
|   | |||||||
							
								
								
									
										7
									
								
								vendor/github.com/mitchellh/cli/ui_mock.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/mitchellh/cli/ui_mock.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,9 +1,11 @@ | |||||||
| package cli | package cli | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
|  | 	"bufio" | ||||||
| 	"bytes" | 	"bytes" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io" | 	"io" | ||||||
|  | 	"strings" | ||||||
| 	"sync" | 	"sync" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -35,9 +37,12 @@ func (u *MockUi) Ask(query string) (string, error) { | |||||||
|  |  | ||||||
| 	var result string | 	var result string | ||||||
| 	fmt.Fprint(u.OutputWriter, query) | 	fmt.Fprint(u.OutputWriter, query) | ||||||
| 	if _, err := fmt.Fscanln(u.InputReader, &result); err != nil { | 	r := bufio.NewReader(u.InputReader) | ||||||
|  | 	line, err := r.ReadString('\n') | ||||||
|  | 	if err != nil { | ||||||
| 		return "", err | 		return "", err | ||||||
| 	} | 	} | ||||||
|  | 	result = strings.TrimRight(line, "\r\n") | ||||||
|  |  | ||||||
| 	return result, nil | 	return result, nil | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								vendor/github.com/prometheus/client_golang/prometheus/counter.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/prometheus/client_golang/prometheus/counter.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -180,7 +180,7 @@ func NewCounterVec(opts CounterOpts, labelNames []string) *CounterVec { | |||||||
| 			if len(lvs) != len(desc.variableLabels) { | 			if len(lvs) != len(desc.variableLabels) { | ||||||
| 				panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels, lvs)) | 				panic(makeInconsistentCardinalityError(desc.fqName, desc.variableLabels, lvs)) | ||||||
| 			} | 			} | ||||||
| 			result := &counter{desc: desc, labelPairs: makeLabelPairs(desc, lvs)} | 			result := &counter{desc: desc, labelPairs: makeLabelPairs(desc, lvs), now: time.Now} | ||||||
| 			result.init(result) // Init self-collection. | 			result.init(result) // Init self-collection. | ||||||
| 			return result | 			return result | ||||||
| 		}), | 		}), | ||||||
| @@ -309,6 +309,8 @@ type CounterFunc interface { | |||||||
| // provided function must be concurrency-safe. The function should also honor | // provided function must be concurrency-safe. The function should also honor | ||||||
| // the contract for a Counter (values only go up, not down), but compliance will | // the contract for a Counter (values only go up, not down), but compliance will | ||||||
| // not be checked. | // not be checked. | ||||||
|  | // | ||||||
|  | // Check out the ExampleGaugeFunc examples for the similar GaugeFunc. | ||||||
| func NewCounterFunc(opts CounterOpts, function func() float64) CounterFunc { | func NewCounterFunc(opts CounterOpts, function func() float64) CounterFunc { | ||||||
| 	return newValueFunc(NewDesc( | 	return newValueFunc(NewDesc( | ||||||
| 		BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), | 		BuildFQName(opts.Namespace, opts.Subsystem, opts.Name), | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								vendor/github.com/prometheus/client_golang/prometheus/desc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/prometheus/client_golang/prometheus/desc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -20,6 +20,7 @@ import ( | |||||||
| 	"strings" | 	"strings" | ||||||
|  |  | ||||||
| 	"github.com/cespare/xxhash/v2" | 	"github.com/cespare/xxhash/v2" | ||||||
|  | 	//lint:ignore SA1019 Need to keep deprecated package for compatibility. | ||||||
| 	"github.com/golang/protobuf/proto" | 	"github.com/golang/protobuf/proto" | ||||||
| 	"github.com/prometheus/common/model" | 	"github.com/prometheus/common/model" | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										37
									
								
								vendor/github.com/prometheus/client_golang/prometheus/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										37
									
								
								vendor/github.com/prometheus/client_golang/prometheus/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -84,25 +84,21 @@ | |||||||
| // of those four metric types can be found in the Prometheus docs: | // of those four metric types can be found in the Prometheus docs: | ||||||
| // https://prometheus.io/docs/concepts/metric_types/ | // https://prometheus.io/docs/concepts/metric_types/ | ||||||
| // | // | ||||||
| // A fifth "type" of metric is Untyped. It behaves like a Gauge, but signals the | // In addition to the fundamental metric types Gauge, Counter, Summary, and | ||||||
| // Prometheus server not to assume anything about its type. | // Histogram, a very important part of the Prometheus data model is the | ||||||
| // | // partitioning of samples along dimensions called labels, which results in | ||||||
| // In addition to the fundamental metric types Gauge, Counter, Summary, |  | ||||||
| // Histogram, and Untyped, a very important part of the Prometheus data model is |  | ||||||
| // the partitioning of samples along dimensions called labels, which results in |  | ||||||
| // metric vectors. The fundamental types are GaugeVec, CounterVec, SummaryVec, | // metric vectors. The fundamental types are GaugeVec, CounterVec, SummaryVec, | ||||||
| // HistogramVec, and UntypedVec. | // and HistogramVec. | ||||||
| // | // | ||||||
| // While only the fundamental metric types implement the Metric interface, both | // While only the fundamental metric types implement the Metric interface, both | ||||||
| // the metrics and their vector versions implement the Collector interface. A | // the metrics and their vector versions implement the Collector interface. A | ||||||
| // Collector manages the collection of a number of Metrics, but for convenience, | // Collector manages the collection of a number of Metrics, but for convenience, | ||||||
| // a Metric can also “collect itself”. Note that Gauge, Counter, Summary, | // a Metric can also “collect itself”. Note that Gauge, Counter, Summary, and | ||||||
| // Histogram, and Untyped are interfaces themselves while GaugeVec, CounterVec, | // Histogram are interfaces themselves while GaugeVec, CounterVec, SummaryVec, | ||||||
| // SummaryVec, HistogramVec, and UntypedVec are not. | // and HistogramVec are not. | ||||||
| // | // | ||||||
| // To create instances of Metrics and their vector versions, you need a suitable | // To create instances of Metrics and their vector versions, you need a suitable | ||||||
| // …Opts struct, i.e. GaugeOpts, CounterOpts, SummaryOpts, HistogramOpts, or | // …Opts struct, i.e. GaugeOpts, CounterOpts, SummaryOpts, or HistogramOpts. | ||||||
| // UntypedOpts. |  | ||||||
| // | // | ||||||
| // Custom Collectors and constant Metrics | // Custom Collectors and constant Metrics | ||||||
| // | // | ||||||
| @@ -118,13 +114,16 @@ | |||||||
| // existing numbers into Prometheus Metrics during collection. An own | // existing numbers into Prometheus Metrics during collection. An own | ||||||
| // implementation of the Collector interface is perfect for that. You can create | // implementation of the Collector interface is perfect for that. You can create | ||||||
| // Metric instances “on the fly” using NewConstMetric, NewConstHistogram, and | // Metric instances “on the fly” using NewConstMetric, NewConstHistogram, and | ||||||
| // NewConstSummary (and their respective Must… versions). That will happen in | // NewConstSummary (and their respective Must… versions). NewConstMetric is used | ||||||
| // the Collect method. The Describe method has to return separate Desc | // for all metric types with just a float64 as their value: Counter, Gauge, and | ||||||
| // instances, representative of the “throw-away” metrics to be created later. | // a special “type” called Untyped. Use the latter if you are not sure if the | ||||||
| // NewDesc comes in handy to create those Desc instances. Alternatively, you | // mirrored metric is a Counter or a Gauge. Creation of the Metric instance | ||||||
| // could return no Desc at all, which will mark the Collector “unchecked”.  No | // happens in the Collect method. The Describe method has to return separate | ||||||
| // checks are performed at registration time, but metric consistency will still | // Desc instances, representative of the “throw-away” metrics to be created | ||||||
| // be ensured at scrape time, i.e. any inconsistencies will lead to scrape | // later.  NewDesc comes in handy to create those Desc instances. Alternatively, | ||||||
|  | // you could return no Desc at all, which will mark the Collector “unchecked”. | ||||||
|  | // No checks are performed at registration time, but metric consistency will | ||||||
|  | // still be ensured at scrape time, i.e. any inconsistencies will lead to scrape | ||||||
| // errors. Thus, with unchecked Collectors, the responsibility to not collect | // errors. Thus, with unchecked Collectors, the responsibility to not collect | ||||||
| // metrics that lead to inconsistencies in the total scrape result lies with the | // metrics that lead to inconsistencies in the total scrape result lies with the | ||||||
| // implementer of the Collector. While this is not a desirable state, it is | // implementer of the Collector. While this is not a desirable state, it is | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								vendor/github.com/prometheus/client_golang/prometheus/histogram.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/prometheus/client_golang/prometheus/histogram.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -22,6 +22,7 @@ import ( | |||||||
| 	"sync/atomic" | 	"sync/atomic" | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
|  | 	//lint:ignore SA1019 Need to keep deprecated package for compatibility. | ||||||
| 	"github.com/golang/protobuf/proto" | 	"github.com/golang/protobuf/proto" | ||||||
|  |  | ||||||
| 	dto "github.com/prometheus/client_model/go" | 	dto "github.com/prometheus/client_model/go" | ||||||
| @@ -606,7 +607,7 @@ func NewConstHistogram( | |||||||
| } | } | ||||||
|  |  | ||||||
| // MustNewConstHistogram is a version of NewConstHistogram that panics where | // MustNewConstHistogram is a version of NewConstHistogram that panics where | ||||||
| // NewConstMetric would have returned an error. | // NewConstHistogram would have returned an error. | ||||||
| func MustNewConstHistogram( | func MustNewConstHistogram( | ||||||
| 	desc *Desc, | 	desc *Desc, | ||||||
| 	count uint64, | 	count uint64, | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								vendor/github.com/prometheus/client_golang/prometheus/metric.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/prometheus/client_golang/prometheus/metric.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -17,6 +17,7 @@ import ( | |||||||
| 	"strings" | 	"strings" | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
|  | 	//lint:ignore SA1019 Need to keep deprecated package for compatibility. | ||||||
| 	"github.com/golang/protobuf/proto" | 	"github.com/golang/protobuf/proto" | ||||||
| 	"github.com/prometheus/common/model" | 	"github.com/prometheus/common/model" | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										24
									
								
								vendor/github.com/prometheus/client_golang/prometheus/process_collector_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										24
									
								
								vendor/github.com/prometheus/client_golang/prometheus/process_collector_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -33,18 +33,22 @@ var ( | |||||||
| ) | ) | ||||||
|  |  | ||||||
| type processMemoryCounters struct { | type processMemoryCounters struct { | ||||||
| 	// https://docs.microsoft.com/en-us/windows/desktop/api/psapi/ns-psapi-_process_memory_counters_ex | 	// System interface description | ||||||
|  | 	// https://docs.microsoft.com/en-us/windows/desktop/api/psapi/ns-psapi-process_memory_counters_ex | ||||||
|  |  | ||||||
|  | 	// Refer to the Golang internal implementation | ||||||
|  | 	// https://golang.org/src/internal/syscall/windows/psapi_windows.go | ||||||
| 	_                          uint32 | 	_                          uint32 | ||||||
| 	PageFaultCount             uint32 | 	PageFaultCount             uint32 | ||||||
| 	PeakWorkingSetSize         uint64 | 	PeakWorkingSetSize         uintptr | ||||||
| 	WorkingSetSize             uint64 | 	WorkingSetSize             uintptr | ||||||
| 	QuotaPeakPagedPoolUsage    uint64 | 	QuotaPeakPagedPoolUsage    uintptr | ||||||
| 	QuotaPagedPoolUsage        uint64 | 	QuotaPagedPoolUsage        uintptr | ||||||
| 	QuotaPeakNonPagedPoolUsage uint64 | 	QuotaPeakNonPagedPoolUsage uintptr | ||||||
| 	QuotaNonPagedPoolUsage     uint64 | 	QuotaNonPagedPoolUsage     uintptr | ||||||
| 	PagefileUsage              uint64 | 	PagefileUsage              uintptr | ||||||
| 	PeakPagefileUsage          uint64 | 	PeakPagefileUsage          uintptr | ||||||
| 	PrivateUsage               uint64 | 	PrivateUsage               uintptr | ||||||
| } | } | ||||||
|  |  | ||||||
| func getProcessMemoryInfo(handle windows.Handle) (processMemoryCounters, error) { | func getProcessMemoryInfo(handle windows.Handle) (processMemoryCounters, error) { | ||||||
|   | |||||||
							
								
								
									
										29
									
								
								vendor/github.com/prometheus/client_golang/prometheus/push/push.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								vendor/github.com/prometheus/client_golang/prometheus/push/push.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -37,6 +37,7 @@ package push | |||||||
| import ( | import ( | ||||||
| 	"bytes" | 	"bytes" | ||||||
| 	"encoding/base64" | 	"encoding/base64" | ||||||
|  | 	"errors" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"io/ioutil" | 	"io/ioutil" | ||||||
| 	"net/http" | 	"net/http" | ||||||
| @@ -56,6 +57,8 @@ const ( | |||||||
| 	base64Suffix = "@base64" | 	base64Suffix = "@base64" | ||||||
| ) | ) | ||||||
|  |  | ||||||
|  | var errJobEmpty = errors.New("job name is empty") | ||||||
|  |  | ||||||
| // HTTPDoer is an interface for the one method of http.Client that is used by Pusher | // HTTPDoer is an interface for the one method of http.Client that is used by Pusher | ||||||
| type HTTPDoer interface { | type HTTPDoer interface { | ||||||
| 	Do(*http.Request) (*http.Response, error) | 	Do(*http.Request) (*http.Response, error) | ||||||
| @@ -80,14 +83,17 @@ type Pusher struct { | |||||||
| } | } | ||||||
|  |  | ||||||
| // New creates a new Pusher to push to the provided URL with the provided job | // New creates a new Pusher to push to the provided URL with the provided job | ||||||
| // name. You can use just host:port or ip:port as url, in which case “http://” | // name (which must not be empty). You can use just host:port or ip:port as url, | ||||||
| // is added automatically. Alternatively, include the schema in the | // in which case “http://” is added automatically. Alternatively, include the | ||||||
| // URL. However, do not include the “/metrics/jobs/…” part. | // schema in the URL. However, do not include the “/metrics/jobs/…” part. | ||||||
| func New(url, job string) *Pusher { | func New(url, job string) *Pusher { | ||||||
| 	var ( | 	var ( | ||||||
| 		reg = prometheus.NewRegistry() | 		reg = prometheus.NewRegistry() | ||||||
| 		err error | 		err error | ||||||
| 	) | 	) | ||||||
|  | 	if job == "" { | ||||||
|  | 		err = errJobEmpty | ||||||
|  | 	} | ||||||
| 	if !strings.Contains(url, "://") { | 	if !strings.Contains(url, "://") { | ||||||
| 		url = "http://" + url | 		url = "http://" + url | ||||||
| 	} | 	} | ||||||
| @@ -267,7 +273,7 @@ func (p *Pusher) push(method string) error { | |||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 	defer resp.Body.Close() | 	defer resp.Body.Close() | ||||||
| 	// Pushgateway 0.10+ responds with StatusOK, earlier versions with StatusAccepted. | 	// Depending on version and configuration of the PGW, StatusOK or StatusAccepted may be returned. | ||||||
| 	if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusAccepted { | 	if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusAccepted { | ||||||
| 		body, _ := ioutil.ReadAll(resp.Body) // Ignore any further error as this is for an error message only. | 		body, _ := ioutil.ReadAll(resp.Body) // Ignore any further error as this is for an error message only. | ||||||
| 		return fmt.Errorf("unexpected status code %d while pushing to %s: %s", resp.StatusCode, p.fullURL(), body) | 		return fmt.Errorf("unexpected status code %d while pushing to %s: %s", resp.StatusCode, p.fullURL(), body) | ||||||
| @@ -278,9 +284,11 @@ func (p *Pusher) push(method string) error { | |||||||
| // fullURL assembles the URL used to push/delete metrics and returns it as a | // fullURL assembles the URL used to push/delete metrics and returns it as a | ||||||
| // string. The job name and any grouping label values containing a '/' will | // string. The job name and any grouping label values containing a '/' will | ||||||
| // trigger a base64 encoding of the affected component and proper suffixing of | // trigger a base64 encoding of the affected component and proper suffixing of | ||||||
| // the preceding component. If the component does not contain a '/' but other | // the preceding component. Similarly, an empty grouping label value will be | ||||||
| // special character, the usual url.QueryEscape is used for compatibility with | // encoded as base64 just with a single `=` padding character (to avoid an empty | ||||||
| // older versions of the Pushgateway and for better readability. | // path component). If the component does not contain a '/' but other special | ||||||
|  | // characters, the usual url.QueryEscape is used for compatibility with older | ||||||
|  | // versions of the Pushgateway and for better readability. | ||||||
| func (p *Pusher) fullURL() string { | func (p *Pusher) fullURL() string { | ||||||
| 	urlComponents := []string{} | 	urlComponents := []string{} | ||||||
| 	if encodedJob, base64 := encodeComponent(p.job); base64 { | 	if encodedJob, base64 := encodeComponent(p.job); base64 { | ||||||
| @@ -299,9 +307,12 @@ func (p *Pusher) fullURL() string { | |||||||
| } | } | ||||||
|  |  | ||||||
| // encodeComponent encodes the provided string with base64.RawURLEncoding in | // encodeComponent encodes the provided string with base64.RawURLEncoding in | ||||||
| // case it contains '/'. If not, it uses url.QueryEscape instead. It returns | // case it contains '/' and as "=" in case it is empty. If neither is the case, | ||||||
| // true in the former case. | // it uses url.QueryEscape instead. It returns true in the former two cases. | ||||||
| func encodeComponent(s string) (string, bool) { | func encodeComponent(s string) (string, bool) { | ||||||
|  | 	if s == "" { | ||||||
|  | 		return "=", true | ||||||
|  | 	} | ||||||
| 	if strings.Contains(s, "/") { | 	if strings.Contains(s, "/") { | ||||||
| 		return base64.RawURLEncoding.EncodeToString([]byte(s)), true | 		return base64.RawURLEncoding.EncodeToString([]byte(s)), true | ||||||
| 	} | 	} | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								vendor/github.com/prometheus/client_golang/prometheus/registry.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/prometheus/client_golang/prometheus/registry.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -26,6 +26,7 @@ import ( | |||||||
| 	"unicode/utf8" | 	"unicode/utf8" | ||||||
|  |  | ||||||
| 	"github.com/cespare/xxhash/v2" | 	"github.com/cespare/xxhash/v2" | ||||||
|  | 	//lint:ignore SA1019 Need to keep deprecated package for compatibility. | ||||||
| 	"github.com/golang/protobuf/proto" | 	"github.com/golang/protobuf/proto" | ||||||
| 	"github.com/prometheus/common/expfmt" | 	"github.com/prometheus/common/expfmt" | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								vendor/github.com/prometheus/client_golang/prometheus/summary.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/prometheus/client_golang/prometheus/summary.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -23,6 +23,7 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/beorn7/perks/quantile" | 	"github.com/beorn7/perks/quantile" | ||||||
|  | 	//lint:ignore SA1019 Need to keep deprecated package for compatibility. | ||||||
| 	"github.com/golang/protobuf/proto" | 	"github.com/golang/protobuf/proto" | ||||||
|  |  | ||||||
| 	dto "github.com/prometheus/client_model/go" | 	dto "github.com/prometheus/client_model/go" | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								vendor/github.com/prometheus/client_golang/prometheus/value.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/prometheus/client_golang/prometheus/value.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -19,6 +19,7 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
| 	"unicode/utf8" | 	"unicode/utf8" | ||||||
|  |  | ||||||
|  | 	//lint:ignore SA1019 Need to keep deprecated package for compatibility. | ||||||
| 	"github.com/golang/protobuf/proto" | 	"github.com/golang/protobuf/proto" | ||||||
| 	"github.com/golang/protobuf/ptypes" | 	"github.com/golang/protobuf/ptypes" | ||||||
|  |  | ||||||
| @@ -28,7 +29,8 @@ import ( | |||||||
| // ValueType is an enumeration of metric types that represent a simple value. | // ValueType is an enumeration of metric types that represent a simple value. | ||||||
| type ValueType int | type ValueType int | ||||||
|  |  | ||||||
| // Possible values for the ValueType enum. | // Possible values for the ValueType enum. Use UntypedValue to mark a metric | ||||||
|  | // with an unknown type. | ||||||
| const ( | const ( | ||||||
| 	_ ValueType = iota | 	_ ValueType = iota | ||||||
| 	CounterValue | 	CounterValue | ||||||
|   | |||||||
							
								
								
									
										12
									
								
								vendor/github.com/prometheus/client_golang/prometheus/vec.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/github.com/prometheus/client_golang/prometheus/vec.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -91,6 +91,18 @@ func (m *metricVec) Delete(labels Labels) bool { | |||||||
| 	return m.metricMap.deleteByHashWithLabels(h, labels, m.curry) | 	return m.metricMap.deleteByHashWithLabels(h, labels, m.curry) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // Without explicit forwarding of Describe, Collect, Reset, those methods won't | ||||||
|  | // show up in GoDoc. | ||||||
|  |  | ||||||
|  | // Describe implements Collector. | ||||||
|  | func (m *metricVec) Describe(ch chan<- *Desc) { m.metricMap.Describe(ch) } | ||||||
|  |  | ||||||
|  | // Collect implements Collector. | ||||||
|  | func (m *metricVec) Collect(ch chan<- Metric) { m.metricMap.Collect(ch) } | ||||||
|  |  | ||||||
|  | // Reset deletes all metrics in this vector. | ||||||
|  | func (m *metricVec) Reset() { m.metricMap.Reset() } | ||||||
|  |  | ||||||
| func (m *metricVec) curryWith(labels Labels) (*metricVec, error) { | func (m *metricVec) curryWith(labels Labels) (*metricVec, error) { | ||||||
| 	var ( | 	var ( | ||||||
| 		newCurry []curriedLabelValue | 		newCurry []curriedLabelValue | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								vendor/github.com/prometheus/client_golang/prometheus/wrap.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								vendor/github.com/prometheus/client_golang/prometheus/wrap.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -17,6 +17,7 @@ import ( | |||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"sort" | 	"sort" | ||||||
|  |  | ||||||
|  | 	//lint:ignore SA1019 Need to keep deprecated package for compatibility. | ||||||
| 	"github.com/golang/protobuf/proto" | 	"github.com/golang/protobuf/proto" | ||||||
|  |  | ||||||
| 	dto "github.com/prometheus/client_model/go" | 	dto "github.com/prometheus/client_model/go" | ||||||
| @@ -27,7 +28,8 @@ import ( | |||||||
| // registered with the wrapped Registerer in a modified way. The modified | // registered with the wrapped Registerer in a modified way. The modified | ||||||
| // Collector adds the provided Labels to all Metrics it collects (as | // Collector adds the provided Labels to all Metrics it collects (as | ||||||
| // ConstLabels). The Metrics collected by the unmodified Collector must not | // ConstLabels). The Metrics collected by the unmodified Collector must not | ||||||
| // duplicate any of those labels. | // duplicate any of those labels. Wrapping a nil value is valid, resulting | ||||||
|  | // in a no-op Registerer. | ||||||
| // | // | ||||||
| // WrapRegistererWith provides a way to add fixed labels to a subset of | // WrapRegistererWith provides a way to add fixed labels to a subset of | ||||||
| // Collectors. It should not be used to add fixed labels to all metrics exposed. | // Collectors. It should not be used to add fixed labels to all metrics exposed. | ||||||
| @@ -50,6 +52,7 @@ func WrapRegistererWith(labels Labels, reg Registerer) Registerer { | |||||||
| // Registerer. Collectors registered with the returned Registerer will be | // Registerer. Collectors registered with the returned Registerer will be | ||||||
| // registered with the wrapped Registerer in a modified way. The modified | // registered with the wrapped Registerer in a modified way. The modified | ||||||
| // Collector adds the provided prefix to the name of all Metrics it collects. | // Collector adds the provided prefix to the name of all Metrics it collects. | ||||||
|  | // Wrapping a nil value is valid, resulting in a no-op Registerer. | ||||||
| // | // | ||||||
| // WrapRegistererWithPrefix is useful to have one place to prefix all metrics of | // WrapRegistererWithPrefix is useful to have one place to prefix all metrics of | ||||||
| // a sub-system. To make this work, register metrics of the sub-system with the | // a sub-system. To make this work, register metrics of the sub-system with the | ||||||
| @@ -80,6 +83,9 @@ type wrappingRegisterer struct { | |||||||
| } | } | ||||||
|  |  | ||||||
| func (r *wrappingRegisterer) Register(c Collector) error { | func (r *wrappingRegisterer) Register(c Collector) error { | ||||||
|  | 	if r.wrappedRegisterer == nil { | ||||||
|  | 		return nil | ||||||
|  | 	} | ||||||
| 	return r.wrappedRegisterer.Register(&wrappingCollector{ | 	return r.wrappedRegisterer.Register(&wrappingCollector{ | ||||||
| 		wrappedCollector: c, | 		wrappedCollector: c, | ||||||
| 		prefix:           r.prefix, | 		prefix:           r.prefix, | ||||||
| @@ -88,6 +94,9 @@ func (r *wrappingRegisterer) Register(c Collector) error { | |||||||
| } | } | ||||||
|  |  | ||||||
| func (r *wrappingRegisterer) MustRegister(cs ...Collector) { | func (r *wrappingRegisterer) MustRegister(cs ...Collector) { | ||||||
|  | 	if r.wrappedRegisterer == nil { | ||||||
|  | 		return | ||||||
|  | 	} | ||||||
| 	for _, c := range cs { | 	for _, c := range cs { | ||||||
| 		if err := r.Register(c); err != nil { | 		if err := r.Register(c); err != nil { | ||||||
| 			panic(err) | 			panic(err) | ||||||
| @@ -96,6 +105,9 @@ func (r *wrappingRegisterer) MustRegister(cs ...Collector) { | |||||||
| } | } | ||||||
|  |  | ||||||
| func (r *wrappingRegisterer) Unregister(c Collector) bool { | func (r *wrappingRegisterer) Unregister(c Collector) bool { | ||||||
|  | 	if r.wrappedRegisterer == nil { | ||||||
|  | 		return false | ||||||
|  | 	} | ||||||
| 	return r.wrappedRegisterer.Unregister(&wrappingCollector{ | 	return r.wrappedRegisterer.Unregister(&wrappingCollector{ | ||||||
| 		wrappedCollector: c, | 		wrappedCollector: c, | ||||||
| 		prefix:           r.prefix, | 		prefix:           r.prefix, | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								vendor/github.com/prometheus/common/expfmt/decode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/prometheus/common/expfmt/decode.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -164,7 +164,7 @@ func (sd *SampleDecoder) Decode(s *model.Vector) error { | |||||||
| } | } | ||||||
|  |  | ||||||
| // ExtractSamples builds a slice of samples from the provided metric | // ExtractSamples builds a slice of samples from the provided metric | ||||||
| // families. If an error occurrs during sample extraction, it continues to | // families. If an error occurs during sample extraction, it continues to | ||||||
| // extract from the remaining metric families. The returned error is the last | // extract from the remaining metric families. The returned error is the last | ||||||
| // error that has occurred. | // error that has occurred. | ||||||
| func ExtractSamples(o *DecodeOptions, fams ...*dto.MetricFamily) (model.Vector, error) { | func ExtractSamples(o *DecodeOptions, fams ...*dto.MetricFamily) (model.Vector, error) { | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								vendor/github.com/prometheus/common/model/fnv.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/prometheus/common/model/fnv.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -20,7 +20,7 @@ const ( | |||||||
| 	prime64  = 1099511628211 | 	prime64  = 1099511628211 | ||||||
| ) | ) | ||||||
|  |  | ||||||
| // hashNew initializies a new fnv64a hash value. | // hashNew initializes a new fnv64a hash value. | ||||||
| func hashNew() uint64 { | func hashNew() uint64 { | ||||||
| 	return offset64 | 	return offset64 | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										98
									
								
								vendor/github.com/prometheus/common/model/time.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										98
									
								
								vendor/github.com/prometheus/common/model/time.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -181,73 +181,77 @@ func (d *Duration) Type() string { | |||||||
| 	return "duration" | 	return "duration" | ||||||
| } | } | ||||||
|  |  | ||||||
| var durationRE = regexp.MustCompile("^([0-9]+)(y|w|d|h|m|s|ms)$") | var durationRE = regexp.MustCompile("^(([0-9]+)y)?(([0-9]+)w)?(([0-9]+)d)?(([0-9]+)h)?(([0-9]+)m)?(([0-9]+)s)?(([0-9]+)ms)?$") | ||||||
|  |  | ||||||
| // ParseDuration parses a string into a time.Duration, assuming that a year | // ParseDuration parses a string into a time.Duration, assuming that a year | ||||||
| // always has 365d, a week always has 7d, and a day always has 24h. | // always has 365d, a week always has 7d, and a day always has 24h. | ||||||
| func ParseDuration(durationStr string) (Duration, error) { | func ParseDuration(durationStr string) (Duration, error) { | ||||||
|  | 	switch durationStr { | ||||||
|  | 	case "0": | ||||||
|  | 		// Allow 0 without a unit. | ||||||
|  | 		return 0, nil | ||||||
|  | 	case "": | ||||||
|  | 		return 0, fmt.Errorf("empty duration string") | ||||||
|  | 	} | ||||||
| 	matches := durationRE.FindStringSubmatch(durationStr) | 	matches := durationRE.FindStringSubmatch(durationStr) | ||||||
| 	if len(matches) != 3 { | 	if matches == nil { | ||||||
| 		return 0, fmt.Errorf("not a valid duration string: %q", durationStr) | 		return 0, fmt.Errorf("not a valid duration string: %q", durationStr) | ||||||
| 	} | 	} | ||||||
| 	var ( | 	var dur time.Duration | ||||||
| 		n, _ = strconv.Atoi(matches[1]) |  | ||||||
| 		dur  = time.Duration(n) * time.Millisecond | 	// Parse the match at pos `pos` in the regex and use `mult` to turn that | ||||||
| 	) | 	// into ms, then add that value to the total parsed duration. | ||||||
| 	switch unit := matches[2]; unit { | 	m := func(pos int, mult time.Duration) { | ||||||
| 	case "y": | 		if matches[pos] == "" { | ||||||
| 		dur *= 1000 * 60 * 60 * 24 * 365 | 			return | ||||||
| 	case "w": |  | ||||||
| 		dur *= 1000 * 60 * 60 * 24 * 7 |  | ||||||
| 	case "d": |  | ||||||
| 		dur *= 1000 * 60 * 60 * 24 |  | ||||||
| 	case "h": |  | ||||||
| 		dur *= 1000 * 60 * 60 |  | ||||||
| 	case "m": |  | ||||||
| 		dur *= 1000 * 60 |  | ||||||
| 	case "s": |  | ||||||
| 		dur *= 1000 |  | ||||||
| 	case "ms": |  | ||||||
| 		// Value already correct |  | ||||||
| 	default: |  | ||||||
| 		return 0, fmt.Errorf("invalid time unit in duration string: %q", unit) |  | ||||||
| 		} | 		} | ||||||
|  | 		n, _ := strconv.Atoi(matches[pos]) | ||||||
|  | 		d := time.Duration(n) * time.Millisecond | ||||||
|  | 		dur += d * mult | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	m(2, 1000*60*60*24*365) // y | ||||||
|  | 	m(4, 1000*60*60*24*7)   // w | ||||||
|  | 	m(6, 1000*60*60*24)     // d | ||||||
|  | 	m(8, 1000*60*60)        // h | ||||||
|  | 	m(10, 1000*60)          // m | ||||||
|  | 	m(12, 1000)             // s | ||||||
|  | 	m(14, 1)                // ms | ||||||
|  |  | ||||||
| 	return Duration(dur), nil | 	return Duration(dur), nil | ||||||
| } | } | ||||||
|  |  | ||||||
| func (d Duration) String() string { | func (d Duration) String() string { | ||||||
| 	var ( | 	var ( | ||||||
| 		ms = int64(time.Duration(d) / time.Millisecond) | 		ms = int64(time.Duration(d) / time.Millisecond) | ||||||
| 		unit = "ms" | 		r  = "" | ||||||
| 	) | 	) | ||||||
| 	if ms == 0 { | 	if ms == 0 { | ||||||
| 		return "0s" | 		return "0s" | ||||||
| 	} | 	} | ||||||
| 	factors := map[string]int64{ |  | ||||||
| 		"y":  1000 * 60 * 60 * 24 * 365, | 	f := func(unit string, mult int64, exact bool) { | ||||||
| 		"w":  1000 * 60 * 60 * 24 * 7, | 		if exact && ms%mult != 0 { | ||||||
| 		"d":  1000 * 60 * 60 * 24, | 			return | ||||||
| 		"h":  1000 * 60 * 60, | 		} | ||||||
| 		"m":  1000 * 60, | 		if v := ms / mult; v > 0 { | ||||||
| 		"s":  1000, | 			r += fmt.Sprintf("%d%s", v, unit) | ||||||
| 		"ms": 1, | 			ms -= v * mult | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	switch int64(0) { | 	// Only format years and weeks if the remainder is zero, as it is often | ||||||
| 	case ms % factors["y"]: | 	// easier to read 90d than 12w6d. | ||||||
| 		unit = "y" | 	f("y", 1000*60*60*24*365, true) | ||||||
| 	case ms % factors["w"]: | 	f("w", 1000*60*60*24*7, true) | ||||||
| 		unit = "w" |  | ||||||
| 	case ms % factors["d"]: | 	f("d", 1000*60*60*24, false) | ||||||
| 		unit = "d" | 	f("h", 1000*60*60, false) | ||||||
| 	case ms % factors["h"]: | 	f("m", 1000*60, false) | ||||||
| 		unit = "h" | 	f("s", 1000, false) | ||||||
| 	case ms % factors["m"]: | 	f("ms", 1, false) | ||||||
| 		unit = "m" |  | ||||||
| 	case ms % factors["s"]: | 	return r | ||||||
| 		unit = "s" |  | ||||||
| 	} |  | ||||||
| 	return fmt.Sprintf("%v%v", ms/factors[unit], unit) |  | ||||||
| } | } | ||||||
|  |  | ||||||
| // MarshalYAML implements the yaml.Marshaler interface. | // MarshalYAML implements the yaml.Marshaler interface. | ||||||
|   | |||||||
							
								
								
									
										4
									
								
								vendor/github.com/prometheus/procfs/.golangci.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/prometheus/procfs/.golangci.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,4 +1,4 @@ | |||||||
|  | --- | ||||||
| linters: | linters: | ||||||
|   enable: |   enable: | ||||||
|   - staticcheck |   - golint | ||||||
|   - govet |  | ||||||
|   | |||||||
							
								
								
									
										43
									
								
								vendor/github.com/prometheus/procfs/Makefile.common
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										43
									
								
								vendor/github.com/prometheus/procfs/Makefile.common
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -69,12 +69,21 @@ else | |||||||
| 	GO_BUILD_PLATFORM ?= $(GOHOSTOS)-$(GOHOSTARCH) | 	GO_BUILD_PLATFORM ?= $(GOHOSTOS)-$(GOHOSTARCH) | ||||||
| endif | endif | ||||||
|  |  | ||||||
| PROMU_VERSION ?= 0.4.0 | GOTEST := $(GO) test | ||||||
|  | GOTEST_DIR := | ||||||
|  | ifneq ($(CIRCLE_JOB),) | ||||||
|  | ifneq ($(shell which gotestsum),) | ||||||
|  | 	GOTEST_DIR := test-results | ||||||
|  | 	GOTEST := gotestsum --junitfile $(GOTEST_DIR)/unit-tests.xml -- | ||||||
|  | endif | ||||||
|  | endif | ||||||
|  |  | ||||||
|  | PROMU_VERSION ?= 0.5.0 | ||||||
| PROMU_URL     := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz | PROMU_URL     := https://github.com/prometheus/promu/releases/download/v$(PROMU_VERSION)/promu-$(PROMU_VERSION).$(GO_BUILD_PLATFORM).tar.gz | ||||||
|  |  | ||||||
| GOLANGCI_LINT := | GOLANGCI_LINT := | ||||||
| GOLANGCI_LINT_OPTS ?= | GOLANGCI_LINT_OPTS ?= | ||||||
| GOLANGCI_LINT_VERSION ?= v1.16.0 | GOLANGCI_LINT_VERSION ?= v1.18.0 | ||||||
| # golangci-lint only supports linux, darwin and windows platforms on i386/amd64. | # golangci-lint only supports linux, darwin and windows platforms on i386/amd64. | ||||||
| # windows isn't included here because of the path separator being different. | # windows isn't included here because of the path separator being different. | ||||||
| ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin)) | ifeq ($(GOHOSTOS),$(filter $(GOHOSTOS),linux darwin)) | ||||||
| @@ -86,7 +95,8 @@ endif | |||||||
| PREFIX                  ?= $(shell pwd) | PREFIX                  ?= $(shell pwd) | ||||||
| BIN_DIR                 ?= $(shell pwd) | BIN_DIR                 ?= $(shell pwd) | ||||||
| DOCKER_IMAGE_TAG        ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD)) | DOCKER_IMAGE_TAG        ?= $(subst /,-,$(shell git rev-parse --abbrev-ref HEAD)) | ||||||
| DOCKERFILE_PATH         ?= ./ | DOCKERFILE_PATH         ?= ./Dockerfile | ||||||
|  | DOCKERBUILD_CONTEXT     ?= ./ | ||||||
| DOCKER_REPO             ?= prom | DOCKER_REPO             ?= prom | ||||||
|  |  | ||||||
| DOCKER_ARCHS            ?= amd64 | DOCKER_ARCHS            ?= amd64 | ||||||
| @@ -140,15 +150,29 @@ else | |||||||
| 	$(GO) get $(GOOPTS) -t ./... | 	$(GO) get $(GOOPTS) -t ./... | ||||||
| endif | endif | ||||||
|  |  | ||||||
|  | .PHONY: update-go-deps | ||||||
|  | update-go-deps: | ||||||
|  | 	@echo ">> updating Go dependencies" | ||||||
|  | 	@for m in $$($(GO) list -mod=readonly -m -f '{{ if and (not .Indirect) (not .Main)}}{{.Path}}{{end}}' all); do \ | ||||||
|  | 		$(GO) get $$m; \ | ||||||
|  | 	done | ||||||
|  | 	GO111MODULE=$(GO111MODULE) $(GO) mod tidy | ||||||
|  | ifneq (,$(wildcard vendor)) | ||||||
|  | 	GO111MODULE=$(GO111MODULE) $(GO) mod vendor | ||||||
|  | endif | ||||||
|  |  | ||||||
| .PHONY: common-test-short | .PHONY: common-test-short | ||||||
| common-test-short: | common-test-short: $(GOTEST_DIR) | ||||||
| 	@echo ">> running short tests" | 	@echo ">> running short tests" | ||||||
| 	GO111MODULE=$(GO111MODULE) $(GO) test -short $(GOOPTS) $(pkgs) | 	GO111MODULE=$(GO111MODULE) $(GOTEST) -short $(GOOPTS) $(pkgs) | ||||||
|  |  | ||||||
| .PHONY: common-test | .PHONY: common-test | ||||||
| common-test: | common-test: $(GOTEST_DIR) | ||||||
| 	@echo ">> running all tests" | 	@echo ">> running all tests" | ||||||
| 	GO111MODULE=$(GO111MODULE) $(GO) test $(test-flags) $(GOOPTS) $(pkgs) | 	GO111MODULE=$(GO111MODULE) $(GOTEST) $(test-flags) $(GOOPTS) $(pkgs) | ||||||
|  |  | ||||||
|  | $(GOTEST_DIR): | ||||||
|  | 	@mkdir -p $@ | ||||||
|  |  | ||||||
| .PHONY: common-format | .PHONY: common-format | ||||||
| common-format: | common-format: | ||||||
| @@ -200,7 +224,7 @@ endif | |||||||
| .PHONY: common-build | .PHONY: common-build | ||||||
| common-build: promu | common-build: promu | ||||||
| 	@echo ">> building binaries" | 	@echo ">> building binaries" | ||||||
| 	GO111MODULE=$(GO111MODULE) $(PROMU) build --prefix $(PREFIX) | 	GO111MODULE=$(GO111MODULE) $(PROMU) build --prefix $(PREFIX) $(PROMU_BINARIES) | ||||||
|  |  | ||||||
| .PHONY: common-tarball | .PHONY: common-tarball | ||||||
| common-tarball: promu | common-tarball: promu | ||||||
| @@ -211,9 +235,10 @@ common-tarball: promu | |||||||
| common-docker: $(BUILD_DOCKER_ARCHS) | common-docker: $(BUILD_DOCKER_ARCHS) | ||||||
| $(BUILD_DOCKER_ARCHS): common-docker-%: | $(BUILD_DOCKER_ARCHS): common-docker-%: | ||||||
| 	docker build -t "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG)" \ | 	docker build -t "$(DOCKER_REPO)/$(DOCKER_IMAGE_NAME)-linux-$*:$(DOCKER_IMAGE_TAG)" \ | ||||||
|  | 		-f $(DOCKERFILE_PATH) \ | ||||||
| 		--build-arg ARCH="$*" \ | 		--build-arg ARCH="$*" \ | ||||||
| 		--build-arg OS="linux" \ | 		--build-arg OS="linux" \ | ||||||
| 		$(DOCKERFILE_PATH) | 		$(DOCKERBUILD_CONTEXT) | ||||||
|  |  | ||||||
| .PHONY: common-docker-publish $(PUBLISH_DOCKER_ARCHS) | .PHONY: common-docker-publish $(PUBLISH_DOCKER_ARCHS) | ||||||
| common-docker-publish: $(PUBLISH_DOCKER_ARCHS) | common-docker-publish: $(PUBLISH_DOCKER_ARCHS) | ||||||
|   | |||||||
							
								
								
									
										265
									
								
								vendor/github.com/prometheus/procfs/cpuinfo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										265
									
								
								vendor/github.com/prometheus/procfs/cpuinfo.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -11,11 +11,15 @@ | |||||||
| // See the License for the specific language governing permissions and | // See the License for the specific language governing permissions and | ||||||
| // limitations under the License. | // limitations under the License. | ||||||
|  |  | ||||||
|  | // +build linux | ||||||
|  |  | ||||||
| package procfs | package procfs | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"bufio" | 	"bufio" | ||||||
| 	"bytes" | 	"bytes" | ||||||
|  | 	"errors" | ||||||
|  | 	"regexp" | ||||||
| 	"strconv" | 	"strconv" | ||||||
| 	"strings" | 	"strings" | ||||||
|  |  | ||||||
| @@ -52,6 +56,11 @@ type CPUInfo struct { | |||||||
| 	PowerManagement string | 	PowerManagement string | ||||||
| } | } | ||||||
|  |  | ||||||
|  | var ( | ||||||
|  | 	cpuinfoClockRegexp          = regexp.MustCompile(`([\d.]+)`) | ||||||
|  | 	cpuinfoS390XProcessorRegexp = regexp.MustCompile(`^processor\s+(\d+):.*`) | ||||||
|  | ) | ||||||
|  |  | ||||||
| // CPUInfo returns information about current system CPUs. | // CPUInfo returns information about current system CPUs. | ||||||
| // See https://www.kernel.org/doc/Documentation/filesystems/proc.txt | // See https://www.kernel.org/doc/Documentation/filesystems/proc.txt | ||||||
| func (fs FS) CPUInfo() ([]CPUInfo, error) { | func (fs FS) CPUInfo() ([]CPUInfo, error) { | ||||||
| @@ -62,14 +71,26 @@ func (fs FS) CPUInfo() ([]CPUInfo, error) { | |||||||
| 	return parseCPUInfo(data) | 	return parseCPUInfo(data) | ||||||
| } | } | ||||||
|  |  | ||||||
| // parseCPUInfo parses data from /proc/cpuinfo | func parseCPUInfoX86(info []byte) ([]CPUInfo, error) { | ||||||
| func parseCPUInfo(info []byte) ([]CPUInfo, error) { |  | ||||||
| 	cpuinfo := []CPUInfo{} |  | ||||||
| 	i := -1 |  | ||||||
| 	scanner := bufio.NewScanner(bytes.NewReader(info)) | 	scanner := bufio.NewScanner(bytes.NewReader(info)) | ||||||
|  |  | ||||||
|  | 	// find the first "processor" line | ||||||
|  | 	firstLine := firstNonEmptyLine(scanner) | ||||||
|  | 	if !strings.HasPrefix(firstLine, "processor") || !strings.Contains(firstLine, ":") { | ||||||
|  | 		return nil, errors.New("invalid cpuinfo file: " + firstLine) | ||||||
|  | 	} | ||||||
|  | 	field := strings.SplitN(firstLine, ": ", 2) | ||||||
|  | 	v, err := strconv.ParseUint(field[1], 0, 32) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	firstcpu := CPUInfo{Processor: uint(v)} | ||||||
|  | 	cpuinfo := []CPUInfo{firstcpu} | ||||||
|  | 	i := 0 | ||||||
|  |  | ||||||
| 	for scanner.Scan() { | 	for scanner.Scan() { | ||||||
| 		line := scanner.Text() | 		line := scanner.Text() | ||||||
| 		if strings.TrimSpace(line) == "" { | 		if !strings.Contains(line, ":") { | ||||||
| 			continue | 			continue | ||||||
| 		} | 		} | ||||||
| 		field := strings.SplitN(line, ": ", 2) | 		field := strings.SplitN(line, ": ", 2) | ||||||
| @@ -82,7 +103,7 @@ func parseCPUInfo(info []byte) ([]CPUInfo, error) { | |||||||
| 				return nil, err | 				return nil, err | ||||||
| 			} | 			} | ||||||
| 			cpuinfo[i].Processor = uint(v) | 			cpuinfo[i].Processor = uint(v) | ||||||
| 		case "vendor_id": | 		case "vendor", "vendor_id": | ||||||
| 			cpuinfo[i].VendorID = field[1] | 			cpuinfo[i].VendorID = field[1] | ||||||
| 		case "cpu family": | 		case "cpu family": | ||||||
| 			cpuinfo[i].CPUFamily = field[1] | 			cpuinfo[i].CPUFamily = field[1] | ||||||
| @@ -163,5 +184,237 @@ func parseCPUInfo(info []byte) ([]CPUInfo, error) { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	return cpuinfo, nil | 	return cpuinfo, nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func parseCPUInfoARM(info []byte) ([]CPUInfo, error) { | ||||||
|  | 	scanner := bufio.NewScanner(bytes.NewReader(info)) | ||||||
|  |  | ||||||
|  | 	firstLine := firstNonEmptyLine(scanner) | ||||||
|  | 	match, _ := regexp.MatchString("^[Pp]rocessor", firstLine) | ||||||
|  | 	if !match || !strings.Contains(firstLine, ":") { | ||||||
|  | 		return nil, errors.New("invalid cpuinfo file: " + firstLine) | ||||||
|  | 	} | ||||||
|  | 	field := strings.SplitN(firstLine, ": ", 2) | ||||||
|  | 	cpuinfo := []CPUInfo{} | ||||||
|  | 	featuresLine := "" | ||||||
|  | 	commonCPUInfo := CPUInfo{} | ||||||
|  | 	i := 0 | ||||||
|  | 	if strings.TrimSpace(field[0]) == "Processor" { | ||||||
|  | 		commonCPUInfo = CPUInfo{ModelName: field[1]} | ||||||
|  | 		i = -1 | ||||||
|  | 	} else { | ||||||
|  | 		v, err := strconv.ParseUint(field[1], 0, 32) | ||||||
|  | 		if err != nil { | ||||||
|  | 			return nil, err | ||||||
|  | 		} | ||||||
|  | 		firstcpu := CPUInfo{Processor: uint(v)} | ||||||
|  | 		cpuinfo = []CPUInfo{firstcpu} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	for scanner.Scan() { | ||||||
|  | 		line := scanner.Text() | ||||||
|  | 		if !strings.Contains(line, ":") { | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
|  | 		field := strings.SplitN(line, ": ", 2) | ||||||
|  | 		switch strings.TrimSpace(field[0]) { | ||||||
|  | 		case "processor": | ||||||
|  | 			cpuinfo = append(cpuinfo, commonCPUInfo) // start of the next processor | ||||||
|  | 			i++ | ||||||
|  | 			v, err := strconv.ParseUint(field[1], 0, 32) | ||||||
|  | 			if err != nil { | ||||||
|  | 				return nil, err | ||||||
|  | 			} | ||||||
|  | 			cpuinfo[i].Processor = uint(v) | ||||||
|  | 		case "BogoMIPS": | ||||||
|  | 			if i == -1 { | ||||||
|  | 				cpuinfo = append(cpuinfo, commonCPUInfo) // There is only one processor | ||||||
|  | 				i++ | ||||||
|  | 				cpuinfo[i].Processor = 0 | ||||||
|  | 			} | ||||||
|  | 			v, err := strconv.ParseFloat(field[1], 64) | ||||||
|  | 			if err != nil { | ||||||
|  | 				return nil, err | ||||||
|  | 			} | ||||||
|  | 			cpuinfo[i].BogoMips = v | ||||||
|  | 		case "Features": | ||||||
|  | 			featuresLine = line | ||||||
|  | 		case "model name": | ||||||
|  | 			cpuinfo[i].ModelName = field[1] | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	fields := strings.SplitN(featuresLine, ": ", 2) | ||||||
|  | 	for i := range cpuinfo { | ||||||
|  | 		cpuinfo[i].Flags = strings.Fields(fields[1]) | ||||||
|  | 	} | ||||||
|  | 	return cpuinfo, nil | ||||||
|  |  | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func parseCPUInfoS390X(info []byte) ([]CPUInfo, error) { | ||||||
|  | 	scanner := bufio.NewScanner(bytes.NewReader(info)) | ||||||
|  |  | ||||||
|  | 	firstLine := firstNonEmptyLine(scanner) | ||||||
|  | 	if !strings.HasPrefix(firstLine, "vendor_id") || !strings.Contains(firstLine, ":") { | ||||||
|  | 		return nil, errors.New("invalid cpuinfo file: " + firstLine) | ||||||
|  | 	} | ||||||
|  | 	field := strings.SplitN(firstLine, ": ", 2) | ||||||
|  | 	cpuinfo := []CPUInfo{} | ||||||
|  | 	commonCPUInfo := CPUInfo{VendorID: field[1]} | ||||||
|  |  | ||||||
|  | 	for scanner.Scan() { | ||||||
|  | 		line := scanner.Text() | ||||||
|  | 		if !strings.Contains(line, ":") { | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
|  | 		field := strings.SplitN(line, ": ", 2) | ||||||
|  | 		switch strings.TrimSpace(field[0]) { | ||||||
|  | 		case "bogomips per cpu": | ||||||
|  | 			v, err := strconv.ParseFloat(field[1], 64) | ||||||
|  | 			if err != nil { | ||||||
|  | 				return nil, err | ||||||
|  | 			} | ||||||
|  | 			commonCPUInfo.BogoMips = v | ||||||
|  | 		case "features": | ||||||
|  | 			commonCPUInfo.Flags = strings.Fields(field[1]) | ||||||
|  | 		} | ||||||
|  | 		if strings.HasPrefix(line, "processor") { | ||||||
|  | 			match := cpuinfoS390XProcessorRegexp.FindStringSubmatch(line) | ||||||
|  | 			if len(match) < 2 { | ||||||
|  | 				return nil, errors.New("Invalid line found in cpuinfo: " + line) | ||||||
|  | 			} | ||||||
|  | 			cpu := commonCPUInfo | ||||||
|  | 			v, err := strconv.ParseUint(match[1], 0, 32) | ||||||
|  | 			if err != nil { | ||||||
|  | 				return nil, err | ||||||
|  | 			} | ||||||
|  | 			cpu.Processor = uint(v) | ||||||
|  | 			cpuinfo = append(cpuinfo, cpu) | ||||||
|  | 		} | ||||||
|  | 		if strings.HasPrefix(line, "cpu number") { | ||||||
|  | 			break | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	i := 0 | ||||||
|  | 	for scanner.Scan() { | ||||||
|  | 		line := scanner.Text() | ||||||
|  | 		if !strings.Contains(line, ":") { | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
|  | 		field := strings.SplitN(line, ": ", 2) | ||||||
|  | 		switch strings.TrimSpace(field[0]) { | ||||||
|  | 		case "cpu number": | ||||||
|  | 			i++ | ||||||
|  | 		case "cpu MHz dynamic": | ||||||
|  | 			clock := cpuinfoClockRegexp.FindString(strings.TrimSpace(field[1])) | ||||||
|  | 			v, err := strconv.ParseFloat(clock, 64) | ||||||
|  | 			if err != nil { | ||||||
|  | 				return nil, err | ||||||
|  | 			} | ||||||
|  | 			cpuinfo[i].CPUMHz = v | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return cpuinfo, nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func parseCPUInfoMips(info []byte) ([]CPUInfo, error) { | ||||||
|  | 	scanner := bufio.NewScanner(bytes.NewReader(info)) | ||||||
|  |  | ||||||
|  | 	// find the first "processor" line | ||||||
|  | 	firstLine := firstNonEmptyLine(scanner) | ||||||
|  | 	if !strings.HasPrefix(firstLine, "system type") || !strings.Contains(firstLine, ":") { | ||||||
|  | 		return nil, errors.New("invalid cpuinfo file: " + firstLine) | ||||||
|  | 	} | ||||||
|  | 	field := strings.SplitN(firstLine, ": ", 2) | ||||||
|  | 	cpuinfo := []CPUInfo{} | ||||||
|  | 	systemType := field[1] | ||||||
|  |  | ||||||
|  | 	i := 0 | ||||||
|  |  | ||||||
|  | 	for scanner.Scan() { | ||||||
|  | 		line := scanner.Text() | ||||||
|  | 		if !strings.Contains(line, ":") { | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
|  | 		field := strings.SplitN(line, ": ", 2) | ||||||
|  | 		switch strings.TrimSpace(field[0]) { | ||||||
|  | 		case "processor": | ||||||
|  | 			v, err := strconv.ParseUint(field[1], 0, 32) | ||||||
|  | 			if err != nil { | ||||||
|  | 				return nil, err | ||||||
|  | 			} | ||||||
|  | 			i = int(v) | ||||||
|  | 			cpuinfo = append(cpuinfo, CPUInfo{}) // start of the next processor | ||||||
|  | 			cpuinfo[i].Processor = uint(v) | ||||||
|  | 			cpuinfo[i].VendorID = systemType | ||||||
|  | 		case "cpu model": | ||||||
|  | 			cpuinfo[i].ModelName = field[1] | ||||||
|  | 		case "BogoMIPS": | ||||||
|  | 			v, err := strconv.ParseFloat(field[1], 64) | ||||||
|  | 			if err != nil { | ||||||
|  | 				return nil, err | ||||||
|  | 			} | ||||||
|  | 			cpuinfo[i].BogoMips = v | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return cpuinfo, nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func parseCPUInfoPPC(info []byte) ([]CPUInfo, error) { | ||||||
|  | 	scanner := bufio.NewScanner(bytes.NewReader(info)) | ||||||
|  |  | ||||||
|  | 	firstLine := firstNonEmptyLine(scanner) | ||||||
|  | 	if !strings.HasPrefix(firstLine, "processor") || !strings.Contains(firstLine, ":") { | ||||||
|  | 		return nil, errors.New("invalid cpuinfo file: " + firstLine) | ||||||
|  | 	} | ||||||
|  | 	field := strings.SplitN(firstLine, ": ", 2) | ||||||
|  | 	v, err := strconv.ParseUint(field[1], 0, 32) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return nil, err | ||||||
|  | 	} | ||||||
|  | 	firstcpu := CPUInfo{Processor: uint(v)} | ||||||
|  | 	cpuinfo := []CPUInfo{firstcpu} | ||||||
|  | 	i := 0 | ||||||
|  |  | ||||||
|  | 	for scanner.Scan() { | ||||||
|  | 		line := scanner.Text() | ||||||
|  | 		if !strings.Contains(line, ":") { | ||||||
|  | 			continue | ||||||
|  | 		} | ||||||
|  | 		field := strings.SplitN(line, ": ", 2) | ||||||
|  | 		switch strings.TrimSpace(field[0]) { | ||||||
|  | 		case "processor": | ||||||
|  | 			cpuinfo = append(cpuinfo, CPUInfo{}) // start of the next processor | ||||||
|  | 			i++ | ||||||
|  | 			v, err := strconv.ParseUint(field[1], 0, 32) | ||||||
|  | 			if err != nil { | ||||||
|  | 				return nil, err | ||||||
|  | 			} | ||||||
|  | 			cpuinfo[i].Processor = uint(v) | ||||||
|  | 		case "cpu": | ||||||
|  | 			cpuinfo[i].VendorID = field[1] | ||||||
|  | 		case "clock": | ||||||
|  | 			clock := cpuinfoClockRegexp.FindString(strings.TrimSpace(field[1])) | ||||||
|  | 			v, err := strconv.ParseFloat(clock, 64) | ||||||
|  | 			if err != nil { | ||||||
|  | 				return nil, err | ||||||
|  | 			} | ||||||
|  | 			cpuinfo[i].CPUMHz = v | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return cpuinfo, nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // firstNonEmptyLine advances the scanner to the first non-empty line | ||||||
|  | // and returns the contents of that line | ||||||
|  | func firstNonEmptyLine(scanner *bufio.Scanner) string { | ||||||
|  | 	for scanner.Scan() { | ||||||
|  | 		line := scanner.Text() | ||||||
|  | 		if strings.TrimSpace(line) != "" { | ||||||
|  | 			return line | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	return "" | ||||||
|  | } | ||||||
|   | |||||||
							
								
								
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_arm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_arm.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | // Copyright 2020 The Prometheus Authors | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  | // you may not use this file except in compliance with the License. | ||||||
|  | // You may obtain a copy of the License at | ||||||
|  | // | ||||||
|  | // http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | // | ||||||
|  | // Unless required by applicable law or agreed to in writing, software | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  | // See the License for the specific language governing permissions and | ||||||
|  | // limitations under the License. | ||||||
|  |  | ||||||
|  | // +build linux | ||||||
|  |  | ||||||
|  | package procfs | ||||||
|  |  | ||||||
|  | var parseCPUInfo = parseCPUInfoARM | ||||||
							
								
								
									
										19
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_arm64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | // Copyright 2020 The Prometheus Authors | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  | // you may not use this file except in compliance with the License. | ||||||
|  | // You may obtain a copy of the License at | ||||||
|  | // | ||||||
|  | // http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | // | ||||||
|  | // Unless required by applicable law or agreed to in writing, software | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  | // See the License for the specific language governing permissions and | ||||||
|  | // limitations under the License. | ||||||
|  |  | ||||||
|  | // +build linux | ||||||
|  | // +build arm64 | ||||||
|  |  | ||||||
|  | package procfs | ||||||
|  |  | ||||||
|  | var parseCPUInfo = parseCPUInfoARM | ||||||
							
								
								
									
										19
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_default.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_default.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | // Copyright 2020 The Prometheus Authors | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  | // you may not use this file except in compliance with the License. | ||||||
|  | // You may obtain a copy of the License at | ||||||
|  | // | ||||||
|  | // http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | // | ||||||
|  | // Unless required by applicable law or agreed to in writing, software | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  | // See the License for the specific language governing permissions and | ||||||
|  | // limitations under the License. | ||||||
|  |  | ||||||
|  | // +build linux | ||||||
|  | // +build 386 amd64 | ||||||
|  |  | ||||||
|  | package procfs | ||||||
|  |  | ||||||
|  | var parseCPUInfo = parseCPUInfoX86 | ||||||
							
								
								
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_mips.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_mips.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | // Copyright 2020 The Prometheus Authors | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  | // you may not use this file except in compliance with the License. | ||||||
|  | // You may obtain a copy of the License at | ||||||
|  | // | ||||||
|  | // http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | // | ||||||
|  | // Unless required by applicable law or agreed to in writing, software | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  | // See the License for the specific language governing permissions and | ||||||
|  | // limitations under the License. | ||||||
|  |  | ||||||
|  | // +build linux | ||||||
|  |  | ||||||
|  | package procfs | ||||||
|  |  | ||||||
|  | var parseCPUInfo = parseCPUInfoMips | ||||||
							
								
								
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_mips64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_mips64.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | // Copyright 2020 The Prometheus Authors | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  | // you may not use this file except in compliance with the License. | ||||||
|  | // You may obtain a copy of the License at | ||||||
|  | // | ||||||
|  | // http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | // | ||||||
|  | // Unless required by applicable law or agreed to in writing, software | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  | // See the License for the specific language governing permissions and | ||||||
|  | // limitations under the License. | ||||||
|  |  | ||||||
|  | // +build linux | ||||||
|  |  | ||||||
|  | package procfs | ||||||
|  |  | ||||||
|  | var parseCPUInfo = parseCPUInfoMips | ||||||
							
								
								
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_mips64le.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_mips64le.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | // Copyright 2020 The Prometheus Authors | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  | // you may not use this file except in compliance with the License. | ||||||
|  | // You may obtain a copy of the License at | ||||||
|  | // | ||||||
|  | // http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | // | ||||||
|  | // Unless required by applicable law or agreed to in writing, software | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  | // See the License for the specific language governing permissions and | ||||||
|  | // limitations under the License. | ||||||
|  |  | ||||||
|  | // +build linux | ||||||
|  |  | ||||||
|  | package procfs | ||||||
|  |  | ||||||
|  | var parseCPUInfo = parseCPUInfoMips | ||||||
							
								
								
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_mipsle.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/prometheus/procfs/cpuinfo_mipsle.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | |||||||
|  | // Copyright 2020 The Prometheus Authors | ||||||
|  | // Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  | // you may not use this file except in compliance with the License. | ||||||
|  | // You may obtain a copy of the License at | ||||||
|  | // | ||||||
|  | // http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | // | ||||||
|  | // Unless required by applicable law or agreed to in writing, software | ||||||
|  | // distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  | // See the License for the specific language governing permissions and | ||||||
|  | // limitations under the License. | ||||||
|  |  | ||||||
|  | // +build linux | ||||||
|  |  | ||||||
|  | package procfs | ||||||
|  |  | ||||||
|  | var parseCPUInfo = parseCPUInfoMips | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	 Jeff Mitchell
					Jeff Mitchell