From 5760600914d2d87a7deb636ce28faae86eca545d Mon Sep 17 00:00:00 2001 From: jacob Date: Tue, 24 Aug 2021 13:05:22 -0700 Subject: [PATCH 01/34] checkpoint: tests passin' --- cmd/controller/main.go | 3 ++- cmd/webhook/main.go | 5 +++- .../v1alpha3/provisioner_defaults.go | 22 +++++++++------- pkg/cloudprovider/aws/suite_test.go | 26 ++++++++++++++++++- pkg/utils/filesys/filesys.go | 19 ++++++++++++++ 5 files changed, 62 insertions(+), 13 deletions(-) create mode 100644 pkg/utils/filesys/filesys.go diff --git a/cmd/controller/main.go b/cmd/controller/main.go index cd4aac145901..76d0221ee047 100644 --- a/cmd/controller/main.go +++ b/cmd/controller/main.go @@ -38,6 +38,7 @@ import ( "knative.dev/pkg/logging" "knative.dev/pkg/signals" "knative.dev/pkg/system" + "os" controllerruntime "sigs.k8s.io/controller-runtime" ) @@ -67,7 +68,7 @@ func main() { clientSet := kubernetes.NewForConfigOrDie(config) // 1. Setup logger and watch for changes to log level - ctx := LoggingContextOrDie(config, clientSet) + ctx := context.WithValue(LoggingContextOrDie(config, clientSet), "karpenter.sh/fs", os.DirFS("/")) // 2. Setup controller runtime controller cloudProvider := registry.NewCloudProvider(ctx, cloudprovider.Options{ClientSet: clientSet}) diff --git a/cmd/webhook/main.go b/cmd/webhook/main.go index 1283cf00fb15..dab7cedc3da0 100644 --- a/cmd/webhook/main.go +++ b/cmd/webhook/main.go @@ -21,6 +21,7 @@ import ( "github.com/awslabs/karpenter/pkg/apis" "github.com/awslabs/karpenter/pkg/cloudprovider" "github.com/awslabs/karpenter/pkg/cloudprovider/registry" + "github.com/awslabs/karpenter/pkg/utils/filesys" "k8s.io/client-go/kubernetes" "knative.dev/pkg/configmap" "knative.dev/pkg/controller" @@ -97,4 +98,6 @@ func newConfigValidationController(ctx context.Context, cmw configmap.Watcher) * ) } -func InjectContext(ctx context.Context) context.Context { return ctx } +func InjectContext(ctx context.Context) context.Context { + return filesys.Inject(ctx) +} diff --git a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go index 93bd945e69ef..15bbead71549 100644 --- a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go +++ b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go @@ -18,8 +18,9 @@ import ( "context" "encoding/base64" "errors" - "io/ioutil" - "os" + "io/fs" + + "github.com/awslabs/karpenter/pkg/utils/filesys" ) const ( @@ -39,15 +40,15 @@ func (s *ProvisionerSpec) SetDefaults(ctx context.Context) {} // default values might change over time (e.g. rolling upgrade of CABundle, ...). func (p *Provisioner) WithDynamicDefaults(ctx context.Context) (_ Provisioner, err error) { provisioner := *p.DeepCopy() - provisioner.Spec, err = provisioner.Spec.withDynamicDefaults() + provisioner.Spec, err = provisioner.Spec.withDynamicDefaults(ctx) return provisioner, err } // WithDefaults returns a copy of this ProvisionerSpec with some empty // properties replaced by default values. -func (s *ProvisionerSpec) withDynamicDefaults() (_ ProvisionerSpec, err error) { +func (s *ProvisionerSpec) withDynamicDefaults(ctx context.Context) (_ ProvisionerSpec, err error) { spec := *s.DeepCopy() - spec.Cluster, err = spec.Cluster.withDynamicDefaults() + spec.Cluster, err = spec.Cluster.withDynamicDefaults(ctx) return spec, err } @@ -55,23 +56,24 @@ func (s *ProvisionerSpec) withDynamicDefaults() (_ ProvisionerSpec, err error) { // properties replaced by default values. Notably, it will try // to load the CABundle from the in-cluster configuraiton if it // is not explicitly set. -func (c *Cluster) withDynamicDefaults() (_ Cluster, err error) { +func (c *Cluster) withDynamicDefaults(ctx context.Context) (_ Cluster, err error) { cluster := *c.DeepCopy() - cluster.CABundle, err = cluster.getCABundle() + cluster.CABundle, err = cluster.getCABundle(ctx) return cluster, err } -func (c *Cluster) getCABundle() (*string, error) { +func (c *Cluster) getCABundle(ctx context.Context) (*string, error) { if c.CABundle != nil { // If CABundle is explicitly provided use that one. An empty string is // a valid value here if the intention is to disable the in-cluster CABundle // and using the HTTP client's default trust-store (CABundle) instead. return c.CABundle, nil } + // Otherwise, fallback to the in-cluster configuration. - binary, err := ioutil.ReadFile(InClusterCABundlePath) + binary, err := fs.ReadFile(filesys.For(ctx), InClusterCABundlePath) if err != nil { - if errors.Is(err, os.ErrNotExist) { + if errors.Is(err, fs.ErrNotExist) { return nil, nil } return nil, err diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index 9c5f15065fd7..84b3ad771fc4 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -16,6 +16,7 @@ package aws import ( "context" + "fmt" "testing" "time" @@ -28,12 +29,15 @@ import ( "github.com/awslabs/karpenter/pkg/controllers/allocation/scheduling" "github.com/awslabs/karpenter/pkg/test" . "github.com/awslabs/karpenter/pkg/test/expectations" + "github.com/awslabs/karpenter/pkg/utils/filesys" "github.com/awslabs/karpenter/pkg/utils/parallel" "github.com/awslabs/karpenter/pkg/utils/resources" "github.com/patrickmn/go-cache" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/reconcile" + "io/fs" + "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" . "github.com/onsi/ginkgo" @@ -52,8 +56,29 @@ var launchTemplateCache *cache.Cache var fakeEC2API *fake.EC2API var controller reconcile.Reconciler +type singletonFS struct { + filename string + contents []byte +} + +func (s *singletonFS) Open(name string) (fs.File, error) { + panic("not implemented") +} + +func (s *singletonFS) ReadFile(name string) ([]byte, error) { + fmt.Println("ReadFile called") + if name == s.filename { + return s.contents, nil + } + return nil, fs.ErrNotExist +} + func TestAPIs(t *testing.T) { ctx = TestContextWithLogger(t) + ctx = context.WithValue(ctx, filesys.KarpenterFS, &singletonFS{ + filename: v1alpha3.InClusterCABundlePath, + contents: []byte("dGVzdC1jbHVzdGVyCg=="), + }) RegisterFailHandler(Fail) RunSpecs(t, "CloudProvider/AWS") } @@ -107,7 +132,6 @@ var _ = Describe("Allocation", func() { Cluster: v1alpha3.Cluster{ Name: ptr.String("test-cluster"), Endpoint: "https://test-cluster", - CABundle: ptr.String("dGVzdC1jbHVzdGVyCg=="), }, }, } diff --git a/pkg/utils/filesys/filesys.go b/pkg/utils/filesys/filesys.go new file mode 100644 index 000000000000..1315a0a28f7a --- /dev/null +++ b/pkg/utils/filesys/filesys.go @@ -0,0 +1,19 @@ +package filesys + +import ( + "context" + "io/fs" + "os" +) + +const ( + KarpenterFS = "karpenter.sh/fs" +) + +func Inject(ctx context.Context) context.Context { + return context.WithValue(ctx, KarpenterFS, os.DirFS("/")) +} + +func For(ctx context.Context) fs.FS { + return ctx.Value(KarpenterFS).(fs.FS) +} From 93f824d62fb9503e881fe5904bdc6f50daf2e1a6 Mon Sep 17 00:00:00 2001 From: jacob Date: Tue, 24 Aug 2021 13:17:38 -0700 Subject: [PATCH 02/34] minor cleanups --- cmd/controller/main.go | 4 ++-- pkg/cloudprovider/aws/suite_test.go | 2 -- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/cmd/controller/main.go b/cmd/controller/main.go index 76d0221ee047..9e9ba87c5f85 100644 --- a/cmd/controller/main.go +++ b/cmd/controller/main.go @@ -26,6 +26,7 @@ import ( "github.com/awslabs/karpenter/pkg/controllers/allocation" "github.com/awslabs/karpenter/pkg/controllers/node" "github.com/awslabs/karpenter/pkg/controllers/termination" + "github.com/awslabs/karpenter/pkg/utils/filesys" "github.com/go-logr/zapr" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/kubernetes" @@ -38,7 +39,6 @@ import ( "knative.dev/pkg/logging" "knative.dev/pkg/signals" "knative.dev/pkg/system" - "os" controllerruntime "sigs.k8s.io/controller-runtime" ) @@ -68,7 +68,7 @@ func main() { clientSet := kubernetes.NewForConfigOrDie(config) // 1. Setup logger and watch for changes to log level - ctx := context.WithValue(LoggingContextOrDie(config, clientSet), "karpenter.sh/fs", os.DirFS("/")) + ctx := filesys.Inject(LoggingContextOrDie(config, clientSet)) // 2. Setup controller runtime controller cloudProvider := registry.NewCloudProvider(ctx, cloudprovider.Options{ClientSet: clientSet}) diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index 84b3ad771fc4..2464ed6277e5 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -16,7 +16,6 @@ package aws import ( "context" - "fmt" "testing" "time" @@ -66,7 +65,6 @@ func (s *singletonFS) Open(name string) (fs.File, error) { } func (s *singletonFS) ReadFile(name string) ([]byte, error) { - fmt.Println("ReadFile called") if name == s.filename { return s.contents, nil } From c834adc4e62f9f9bbdeb273a375d0b6da63fa2a4 Mon Sep 17 00:00:00 2001 From: jacob Date: Tue, 24 Aug 2021 17:45:57 -0700 Subject: [PATCH 03/34] add another test for aws required fields --- pkg/cloudprovider/aws/suite_test.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index 2464ed6277e5..985225fd60e2 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -130,6 +130,7 @@ var _ = Describe("Allocation", func() { Cluster: v1alpha3.Cluster{ Name: ptr.String("test-cluster"), Endpoint: "https://test-cluster", + CABundle: ptr.String("dGVzdC1jbHVzdGVyCg=="), }, }, } @@ -579,11 +580,12 @@ var _ = Describe("Allocation", func() { }) Context("Validation", func() { Context("Cluster", func() { - It("should fail if fields are empty", func() { + It("should fail if aws required fields are empty", func() { for _, cluster := range []v1alpha3.Cluster{ - {Endpoint: "https://test-cluster", CABundle: ptr.String("dGVzdC1jbHVzdGVyCg==")}, - {Name: ptr.String("test-cluster"), CABundle: ptr.String("dGVzdC1jbHVzdGVyCg==")}, {CABundle: ptr.String("dGVzdC1jbHVzdGVyCg==")}, + {CABundle: ptr.String("dGVzdC1jbHVzdGVyCg=="), Endpoint: "https://test-cluster"}, + {CABundle: ptr.String("dGVzdC1jbHVzdGVyCg=="), Name: ptr.String("test-cluster")}, + {Endpoint: "https://test-cluster", Name: ptr.String("test-cluster")}, {Name: ptr.String("test-cluster")}, } { provisioner.Spec.Cluster = cluster From 6adb8c13a4de4a39e14b97b45cd7595ebe73530e Mon Sep 17 00:00:00 2001 From: jacob Date: Tue, 24 Aug 2021 17:46:46 -0700 Subject: [PATCH 04/34] validate caBundle --- pkg/cloudprovider/aws/cloudprovider.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/cloudprovider/aws/cloudprovider.go b/pkg/cloudprovider/aws/cloudprovider.go index 1e4f4628992e..862e6ae42c96 100644 --- a/pkg/cloudprovider/aws/cloudprovider.go +++ b/pkg/cloudprovider/aws/cloudprovider.go @@ -177,5 +177,8 @@ func (c *CloudProvider) ValidateSpec(ctx context.Context, spec *v1alpha3.Provisi if spec.Cluster.Name == nil || len(*spec.Cluster.Name) == 0 { errs = errs.Also(apis.ErrMissingField("name")).ViaField("cluster") } + if spec.Cluster.CABundle == nil || len(*spec.Cluster.CABundle) == 0 { + errs = errs.Also(apis.ErrMissingField("caBundle")).ViaField("cluster") + } return errs } From 67346ff2aadbb4227f33916b2684d5786da67a93 Mon Sep 17 00:00:00 2001 From: jacob Date: Tue, 24 Aug 2021 17:50:44 -0700 Subject: [PATCH 05/34] fix PR comment --- pkg/cloudprovider/aws/suite_test.go | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index 985225fd60e2..ad43a14da167 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -16,10 +16,13 @@ package aws import ( "context" + "io/fs" "testing" "time" "github.com/Pallinder/go-randomdata" + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/service/ec2" "github.com/awslabs/karpenter/pkg/apis/provisioning/v1alpha3" "github.com/awslabs/karpenter/pkg/cloudprovider/aws/fake" "github.com/awslabs/karpenter/pkg/cloudprovider/registry" @@ -31,22 +34,17 @@ import ( "github.com/awslabs/karpenter/pkg/utils/filesys" "github.com/awslabs/karpenter/pkg/utils/parallel" "github.com/awslabs/karpenter/pkg/utils/resources" - "github.com/patrickmn/go-cache" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/reconcile" - - "io/fs" - - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/ec2" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" + "github.com/patrickmn/go-cache" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" . "knative.dev/pkg/logging/testing" "knative.dev/pkg/ptr" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/reconcile" ) var ctx context.Context From 0e30543f31b888aa25706aeeca391e06f3fa6ee6 Mon Sep 17 00:00:00 2001 From: jacob Date: Thu, 26 Aug 2021 08:25:02 -0700 Subject: [PATCH 06/34] checkpoint --- .../v1alpha3/provisioner_validation_test.go | 6 ++++++ pkg/cloudprovider/aws/suite_test.go | 11 ++++++----- pkg/utils/filesys/filesys.go | 12 ++++++++++++ 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/pkg/apis/provisioning/v1alpha3/provisioner_validation_test.go b/pkg/apis/provisioning/v1alpha3/provisioner_validation_test.go index e6a514ee8004..769bd2970b2c 100644 --- a/pkg/apis/provisioning/v1alpha3/provisioner_validation_test.go +++ b/pkg/apis/provisioning/v1alpha3/provisioner_validation_test.go @@ -16,6 +16,7 @@ package v1alpha3 import ( "context" + "io/fs" "strings" "testing" @@ -37,6 +38,11 @@ func TestAPIs(t *testing.T) { RunSpecs(t, "Validation") } +// ctx = context.WithValue(ctx, filesys.KarpenterFS, &singletonFS{ +// filename: v1alpha3.InClusterCABundlePath, +// contents: []byte("dGVzdC1jbHVzdGVyCg=="), +// }) + var _ = Describe("Validation", func() { var provisioner *Provisioner diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index ad43a14da167..e56a804e212d 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -31,7 +31,6 @@ import ( "github.com/awslabs/karpenter/pkg/controllers/allocation/scheduling" "github.com/awslabs/karpenter/pkg/test" . "github.com/awslabs/karpenter/pkg/test/expectations" - "github.com/awslabs/karpenter/pkg/utils/filesys" "github.com/awslabs/karpenter/pkg/utils/parallel" "github.com/awslabs/karpenter/pkg/utils/resources" . "github.com/onsi/ginkgo" @@ -71,10 +70,6 @@ func (s *singletonFS) ReadFile(name string) ([]byte, error) { func TestAPIs(t *testing.T) { ctx = TestContextWithLogger(t) - ctx = context.WithValue(ctx, filesys.KarpenterFS, &singletonFS{ - filename: v1alpha3.InClusterCABundlePath, - contents: []byte("dGVzdC1jbHVzdGVyCg=="), - }) RegisterFailHandler(Fail) RunSpecs(t, "CloudProvider/AWS") } @@ -578,6 +573,12 @@ var _ = Describe("Allocation", func() { }) Context("Validation", func() { Context("Cluster", func() { + + It("should default in missing fields", func() { + provisioner.Spec.Cluster.CABundle = nil + Expect(provisioner.Spec.Validate(ctx)).ToNot(Succeed()) + }) + It("should fail if aws required fields are empty", func() { for _, cluster := range []v1alpha3.Cluster{ {CABundle: ptr.String("dGVzdC1jbHVzdGVyCg==")}, diff --git a/pkg/utils/filesys/filesys.go b/pkg/utils/filesys/filesys.go index 1315a0a28f7a..c6f8d4063ca7 100644 --- a/pkg/utils/filesys/filesys.go +++ b/pkg/utils/filesys/filesys.go @@ -1,3 +1,15 @@ +/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + package filesys import ( From ea56f6d153d2d168a21d2191f8c117c68bb31528 Mon Sep 17 00:00:00 2001 From: jacob Date: Thu, 26 Aug 2021 13:39:04 -0700 Subject: [PATCH 07/34] checkpoint - add test for defaulting in CABundle --- pkg/apis/provisioning/v1alpha3/provisioner_validation_test.go | 1 - pkg/cloudprovider/aws/suite_test.go | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/pkg/apis/provisioning/v1alpha3/provisioner_validation_test.go b/pkg/apis/provisioning/v1alpha3/provisioner_validation_test.go index 769bd2970b2c..2a1edb1c2390 100644 --- a/pkg/apis/provisioning/v1alpha3/provisioner_validation_test.go +++ b/pkg/apis/provisioning/v1alpha3/provisioner_validation_test.go @@ -16,7 +16,6 @@ package v1alpha3 import ( "context" - "io/fs" "strings" "testing" diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index e56a804e212d..7b293bfdba6c 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -573,12 +573,10 @@ var _ = Describe("Allocation", func() { }) Context("Validation", func() { Context("Cluster", func() { - It("should default in missing fields", func() { provisioner.Spec.Cluster.CABundle = nil - Expect(provisioner.Spec.Validate(ctx)).ToNot(Succeed()) + Expect(provisioner.Spec.Validate(ctx)).To(Succeed()) }) - It("should fail if aws required fields are empty", func() { for _, cluster := range []v1alpha3.Cluster{ {CABundle: ptr.String("dGVzdC1jbHVzdGVyCg==")}, From 95894f6d059c651ab16a2d216ba3f779e681982a Mon Sep 17 00:00:00 2001 From: jacob Date: Thu, 26 Aug 2021 13:43:41 -0700 Subject: [PATCH 08/34] remove commented-out code --- .../provisioning/v1alpha3/provisioner_validation_test.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/pkg/apis/provisioning/v1alpha3/provisioner_validation_test.go b/pkg/apis/provisioning/v1alpha3/provisioner_validation_test.go index 2a1edb1c2390..e6a514ee8004 100644 --- a/pkg/apis/provisioning/v1alpha3/provisioner_validation_test.go +++ b/pkg/apis/provisioning/v1alpha3/provisioner_validation_test.go @@ -37,11 +37,6 @@ func TestAPIs(t *testing.T) { RunSpecs(t, "Validation") } -// ctx = context.WithValue(ctx, filesys.KarpenterFS, &singletonFS{ -// filename: v1alpha3.InClusterCABundlePath, -// contents: []byte("dGVzdC1jbHVzdGVyCg=="), -// }) - var _ = Describe("Validation", func() { var provisioner *Provisioner From 0d7a97ead041485024e68c9cf3e73132398983cd Mon Sep 17 00:00:00 2001 From: jacob Date: Sat, 28 Aug 2021 17:07:52 -0700 Subject: [PATCH 09/34] fix broken os.FS unit test mock also turns out non-test code was broken by my os.FS change --- go.mod | 1 + go.sum | 266 ++++++++++++++++++ .../v1alpha3/provisioner_defaults.go | 6 +- pkg/cloudprovider/aws/cloudprovider.go | 1 + pkg/cloudprovider/aws/suite_test.go | 25 +- pkg/controllers/allocation/controller.go | 4 +- pkg/utils/filesys/filesys.go | 25 +- 7 files changed, 311 insertions(+), 17 deletions(-) diff --git a/go.mod b/go.mod index 94ba62fb93c9..003866783ede 100644 --- a/go.mod +++ b/go.mod @@ -13,6 +13,7 @@ require ( github.com/onsi/ginkgo v1.16.4 github.com/onsi/gomega v1.13.0 github.com/patrickmn/go-cache v2.1.0+incompatible + github.com/spf13/afero v1.6.0 go.uber.org/multierr v1.7.0 golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6 k8s.io/api v0.20.7 diff --git a/go.sum b/go.sum index cc01f223d40b..7d30d26dc2a4 100644 --- a/go.sum +++ b/go.sum @@ -20,18 +20,23 @@ cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNF 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.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0 h1:PQcPefKFdaIzjQFbiyOgAqyx8q5djaE7x9Sqe712DPA= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= 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/firestore v1.1.0 h1:9x7Bx0A9R5/M9jibeJeZWqjeVEIxYW9fZYqB9a70/bY= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= 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.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/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0 h1:STgFzyU5/8miMl0//zKh2aQeTyeaUH3WN9bSUiJ09bA= cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d h1:LblfooH1lKOpp1hIhukktmSAxFkqMPFk9KR6iZ0MJNI= contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d/go.mod h1:IshRmMJBhDfFj5Y67nVhMYTTIze91RUeT73ipWKs/GY= @@ -39,31 +44,53 @@ contrib.go.opencensus.io/exporter/prometheus v0.3.0 h1:08FMdJYpItzsknogU6PiiNo7X contrib.go.opencensus.io/exporter/prometheus v0.3.0/go.mod h1:rpCPVQKhiyH8oomWgm34ZmgIdZa8OVYO5WAIygPbBBE= contrib.go.opencensus.io/exporter/stackdriver v0.13.5 h1:TNaexHK16gPUoc7uzELKOU7JULqccn1NDuqUxmxSqfo= contrib.go.opencensus.io/exporter/stackdriver v0.13.5/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc= +contrib.go.opencensus.io/exporter/zipkin v0.1.2 h1:YqE293IZrKtqPnpwDPH/lOqTWD/s3Iwabycam74JV3g= contrib.go.opencensus.io/exporter/zipkin v0.1.2/go.mod h1:mP5xM3rrgOjpn79MM8fZbj3gsxcuytSqtH0dxSWW1RE= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9 h1:VpgP7xuJadIUuKccphEpTJnWhS2jkQyMt6Y7pJCD7fY= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= +github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.11.1 h1:eVvIXUKiTgv++6YnWb42DUA1YL7qDugnKP0HljexdnQ= github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= +github.com/Azure/go-autorest/autorest/adal v0.9.5 h1:Y3bBUV4rTuxenJJs41HU3qmqsb+auo+a3Lz+PlJPpL0= github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= +github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/logger v0.2.0 h1:e4RVHVZKC5p6UANLJHkM4OfR1UKZPj8Wt8Pcx+3oqrE= github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802 h1:1BDTz0u9nC3//pOCMdNH+CiXJVYJh5UQNCOBG7jbELc= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible h1:1G1pk05UrOh0NlF1oeaaix1x8XzrfjIDK47TY0Zehcw= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= +github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46 h1:lsxEuwrXEAokXB9qhlbKWPpo3KMLZQ5WB5WLQRW1uq0= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= +github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/Pallinder/go-randomdata v1.2.0 h1:DZ41wBchNRb/0GfsePLiSwb0PHZmT67XY00lCDlaYPg= github.com/Pallinder/go-randomdata v1.2.0/go.mod h1:yHmJgulpD2Nfrm0cR9tI/+oAgRqCQQixsA8HyRZfV9Y= +github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= +github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= +github.com/Shopify/sarama v1.19.0 h1:9oksLxC6uxVPHPVYUmq6xhr1BOF/hHobWH2UzO67z1s= github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= +github.com/Shopify/toxiproxy v2.1.4+incompatible h1:TKdv8HiTLgE5wdJuEML90aBgNWsokNbMijUGhmcoBJc= github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= +github.com/VividCortex/gohistogram v1.0.0 h1:6+hBz+qvs0JOrrNhhmR7lFxo5sINxBCGXrdtl/UvroE= github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= +github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5 h1:rFw4nCn9iMW+Vajsk51NtYIcwSTkXr+JGrMd36kTDJw= github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= +github.com/alecthomas/jsonschema v0.0.0-20180308105923-f2c93856175a h1:FTykHiUVgZkL0cdTplzjoDZnizgAqEo6riN3R2VYwg0= github.com/alecthomas/jsonschema v0.0.0-20180308105923-f2c93856175a/go.mod h1:qpebaTNSsyUn5rPSJMsfqEtDw71TTggXM6stUDI16HA= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM= @@ -72,27 +99,38 @@ github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/antihax/optional v1.0.0 h1:xK2lYat7ZLaVVcIuj82J8kIro4V6kDe0AUDFboUCwcg= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/apache/thrift v0.13.0 h1:5hryIiq9gtn+MiLVn0wP37kb/uTeRZgN08WoCsAhIhI= github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da h1:8GUt8eRujhVEGZFFEjBj46YV4rDjvGrNxb0KMWYkL2I= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310 h1:BUAU3CGlLvorLI26FmByPp2eC2qla6E1Tw+scpcg/to= github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a h1:pv34s756C4pEXnjgPfGYgdhg/ZdajGhyOvzx8k+23nw= github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= +github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/avast/retry-go v2.7.0+incompatible h1:XaGnzl7gESAideSjr+I8Hki/JBi+Yb9baHlMRPeSC84= github.com/avast/retry-go v2.7.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY= +github.com/aws/aws-lambda-go v1.13.3 h1:SuCy7H3NLyp+1Mrfp+m80jcbi9KYWAs9/BXwppwRDzY= github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-sdk-go v1.38.69 h1:V489lmrdkIQSfF6OAGZZ1Cavcm7eczCm2JcGvX+yHRg= github.com/aws/aws-sdk-go v1.38.69/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go-v2 v0.18.0 h1:qZ+woO4SamnH/eEbjM2IDLhRNwIwND/RQyVlBLp3Jqg= github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= 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.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY= github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c h1:+0HFd5KSZ/mm3JmhmrDukiId5iR6w4+BdFtfSy4yWIc= github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= @@ -100,9 +138,13 @@ github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/blendle/zapdriver v1.3.1 h1:C3dydBOWYRiOk+B8X9IVZ5IOe+7cl+tGOexN4QqHfpE= github.com/blendle/zapdriver v1.3.1/go.mod h1:mdXfREi6u5MArG4j9fewC+FGnXaBR+T4Ox4J2u4eHCc= +github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b h1:AP/Y7sqYicnjGDfD5VcY4CIfh1hRXBUavxrvELjTiOE= github.com/bmizerany/perks v0.0.0-20141205001514-d9a9656a3a4b/go.mod h1:ac9efd0D1fsDb3EJvhqgXRbFx7bs2wqZ10HQPeU8U/Q= +github.com/c2h5oh/datasize v0.0.0-20171227191756-4eba002a5eae h1:2Zmk+8cNvAGuY8AyvZuWpUdpQUAXwfom4ReVMe/CTIo= github.com/c2h5oh/datasize v0.0.0-20171227191756-4eba002a5eae/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= +github.com/casbin/casbin/v2 v2.1.2 h1:bTwon/ECRx9dwBy2ewRVr5OiqjeXSGiTUY74sDPQi/g= 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/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/census-instrumentation/opencensus-proto v0.3.0 h1:t/LhUZLVitR1Ow2YOnduCsavhwFUklBMoGVYUCqmCqk= @@ -111,55 +153,86 @@ github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e h1:fY5BOSpyZCqRo5OhCuC+XN+r/bBCmeuuJtjz+bCNIf8= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec h1:EdRZT3IeKQmfCSrgo8SZ8V3MEnskuJP0wCYNpe+aiXo= 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/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +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/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w= github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= +github.com/coreos/bbolt v1.3.2 h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.13+incompatible h1:8F3hqu9fGYLBifCmRCJsicFqDx/D68Rt3q1JMazcgBQ= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-oidc v2.1.0+incompatible h1:sdJrfw8akMnCuUlaZU3tE/uYXFgfqom8DBE9so9EBsM= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM= github.com/coreos/go-semver v0.3.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/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f h1:lBNOc5arjvs8E5mO2tbpBpLoyyu8B6e44T7hJy6potg= github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= +github.com/cpuguy83/go-md2man/v2 v2.0.0 h1:EoUDS0afbrsXAZ9YQ9jdu/mZ2sXgT1/2yyNng4PGlyM= github.com/cpuguy83/go-md2man/v2 v2.0.0/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.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w= 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.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/deckarep/golang-set v1.7.1 h1:SCQV0S6gTtp6itiFrTqI+pfmJ4LN85S1YzhDf9rTHJQ= github.com/deckarep/golang-set v1.7.1/go.mod h1:93vsz/8Wt4joVM7c2AVqh+YRMiUSc14yDtF28KmMOgQ= +github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM= github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= github.com/dgryski/go-gk v0.0.0-20140819190930-201884a44051/go.mod h1:qm+vckxRlDt0aOla0RYJJVeqHZlWfOm2UIxHaqPB46E= +github.com/dgryski/go-gk v0.0.0-20200319235926-a69029f61654 h1:XOPLOMn/zT4jIgxfxSsoXPxkrzz0FaCHwp33x5POJ+Q= github.com/dgryski/go-gk v0.0.0-20200319235926-a69029f61654/go.mod h1:qm+vckxRlDt0aOla0RYJJVeqHZlWfOm2UIxHaqPB46E= +github.com/dgryski/go-lttb v0.0.0-20180810165845-318fcdf10a77 h1:iRnqZBF0a1hoOOjOdPKf+IxqlJZOas7A48j77RAc7Yg= github.com/dgryski/go-lttb v0.0.0-20180810165845-318fcdf10a77/go.mod h1:Va5MyIzkU0rAM92tn3hb3Anb7oz7KcnixF49+2wOMe4= +github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954 h1:RMLoZVzv4GliuWafOuPuQDKSm1SJph7uCRnnS61JAn4= github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= +github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96 h1:cenwrSVm+Z7QLSV/BsnenAOcDXdX4cMv4wP0B/5QbPg= github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= +github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= 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/eapache/go-resiliency v1.1.0 h1:1NtRmCAqadE2FN4ZcN6g90TP3uk8cg9rn9eNK2197aU= github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= +github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21 h1:YEetp8/yCZMuEPMUDHG0CW/brkkEp8mzqk2+ODEitlw= github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= +github.com/eapache/queue v1.1.0 h1:YOEu7KNc61ntiQlcEeUIoDTJ2o8mQznoNvUhiigpIqc= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= +github.com/edsrzf/mmap-go v1.0.0 h1:CEBF7HpRnUCSJgGUb5h1Gm7e3VkmVDrR8lvWVLtrOFw= github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153 h1:yUdfgN0XgIJw7foRItutHYUIhlcKzcSf5vDpdhQAKTc= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= +github.com/emicklei/go-restful v2.9.5+incompatible h1:spTtZBk5DYEvbxMVutUuTyh1Ao2r4iyvLdACqsl/Ljk= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= 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.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.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d h1:QyzYnTnPE15SQyUeqU6qLbWxMkwyAyu+vGksa0b7j00= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/evanphx/json-patch v0.5.2/go.mod h1:ZWS5hhDbVDyob71nXKNL0+PWn6ToqBHMikGIFbs31qQ= github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= @@ -167,24 +240,34 @@ github.com/evanphx/json-patch v4.9.0+incompatible h1:kLcOMZeuLAJvL2BPWLMIj5oaZQo github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.5.0 h1:bAmFiUJ+o0o2B4OiTFeE3MqCOtyo+jjPP9iZ0VRxYUc= github.com/evanphx/json-patch/v5 v5.5.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= +github.com/fatih/color v1.7.0 h1:DkWD4oS2D8LGGgTQ6IvwJJXSL5Vp2ffcQg58nFV38Ys= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/form3tech-oss/jwt-go v3.2.2+incompatible h1:TcekIExNqud5crz4xD2pavyTgWiPvpYe4Xau31I0PRk= github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db h1:gb2Z18BhTPJPpLQWj4T+rfKHYCHxRHCtRxhKKjRidVw= github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= +github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8 h1:a9ENSRDFBUPkJ5lCgVZh26+ZbGyoVJG7yb5SSzF5H54= github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1 h1:QbL/5oDUmRBzO9/Z7Seo6zf912W/a6Sr4Eu0G/3Jho0= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4 h1:WtGNWLvXpe6ZudgnXrq0barxBImvnnJoMEhXAzcbM0I= 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.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.10.0 h1:dXFJfIHVvUcpSgDOV+Ne6t7jXri8Tfv2uOLHUZ2XNuo= github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= +github.com/go-kit/log v0.1.0 h1:DGJh0Sm43HbOeYDNnVZFl8BvcYVvjD5bqYJvp0REbwQ= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= 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.5.0 h1:TrB8swr/68K7m9CcGut2g3UOihhbcbiMAYiuTXdEih4= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= @@ -196,19 +279,27 @@ github.com/go-logr/zapr v0.4.0 h1:uc1uML3hRYL9/ZZPdgHS/n8Nzo+eaYL/Efxkkamf7OM= github.com/go-logr/zapr v0.4.0/go.mod h1:tabnROwaDl0UNxkVeFRbY8bwB37GwRv0P8lg6aAiEnk= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/jsonpointer v0.19.5 h1:gZr+CIYByUqjcgeLXnQu2gHYQC9o73G2XUeOFYEICuY= github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= +github.com/go-openapi/jsonreference v0.19.5 h1:1WJP/wi4OjB4iV8KVbH73rQaoialJrqv8gitZLxGLtM= github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= +github.com/go-openapi/spec v0.19.3 h1:0XRyw8kguri6Yw4SxhsQA/atC88yqrk0+G4YhI2wabc= github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM= github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= +github.com/go-sql-driver/mysql v1.4.0 h1:7LxgVwFb2hIQtMm87NdgAVfXjnt4OePseqT1tKx+opk= github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/gobuffalo/flect v0.2.2 h1:PAVD7sp0KOdfswjAw9BpLCU9hXo7wFSzgpQ+zNeks/A= github.com/gobuffalo/flect v0.2.2/go.mod h1:vmkQwuZYhN5Pc4ljYQZzP+1sq+NEkK+lh20jmEmX3jc= +github.com/gogo/googleapis v1.1.0 h1:kFkMAZBNAn4j7K0GiZr8cRYzejq68VbheufiV3YuyFI= 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.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= @@ -216,6 +307,7 @@ github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zV github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20160516000752-02826c3e7903/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= @@ -229,6 +321,7 @@ github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFU 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.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4 h1:l75CXGRSwbaYNpl/Z2X1XIIAMSCquvXgpVZDhwEIJsc= github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= 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= @@ -247,17 +340,28 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db h1:woRePGFeVFfLKN/pOkfl+p/TAqKOfFu+7KPlMVpok/w= github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/gonum/blas v0.0.0-20181208220705-f22b278b28ac h1:Q0Jsdxl5jbxouNs1TQYt0gxesYMU4VXRbsTlgDloZ50= github.com/gonum/blas v0.0.0-20181208220705-f22b278b28ac/go.mod h1:P32wAyui1PQ58Oce/KYkOqQv8cVw1zAapXOl+dRFGbc= +github.com/gonum/diff v0.0.0-20181124234638-500114f11e71 h1:BE6g8oinc3Ek2elIHq+uDOiZgX3/ODi+EerJ48yrrKc= github.com/gonum/diff v0.0.0-20181124234638-500114f11e71/go.mod h1:22dM4PLscQl+Nzf64qNBurVJvfyvZELT0iRW2l/NN70= +github.com/gonum/floats v0.0.0-20181209220543-c233463c7e82 h1:EvokxLQsaaQjcWVWSV38221VAK7qc2zhaO17bKys/18= github.com/gonum/floats v0.0.0-20181209220543-c233463c7e82/go.mod h1:PxC8OnwL11+aosOB5+iEPoV3picfs8tUpkVd0pDo+Kg= +github.com/gonum/integrate v0.0.0-20181209220457-a422b5c0fdf2 h1:GUSkTcIe1SlregbHNUKbYDhBsS8lNgYfIp4S4cToUyU= github.com/gonum/integrate v0.0.0-20181209220457-a422b5c0fdf2/go.mod h1:pDgmNM6seYpwvPos3q+zxlXMsbve6mOIPucUnUOrI7Y= +github.com/gonum/internal v0.0.0-20181124074243-f884aa714029 h1:8jtTdc+Nfj9AR+0soOeia9UZSvYBvETVHZrugUowJ7M= github.com/gonum/internal v0.0.0-20181124074243-f884aa714029/go.mod h1:Pu4dmpkhSyOzRwuXkOgAvijx4o+4YMUJJo9OvPYMkks= +github.com/gonum/lapack v0.0.0-20181123203213-e4cdc5a0bff9 h1:7qnwS9+oeSiOIsiUMajT+0R7HR6hw5NegnKPmn/94oI= github.com/gonum/lapack v0.0.0-20181123203213-e4cdc5a0bff9/go.mod h1:XA3DeT6rxh2EAE789SSiSJNqxPaC0aE9J8NTOI0Jo/A= +github.com/gonum/mathext v0.0.0-20181121095525-8a4bf007ea55 h1:Ajwn2ENgC/pKtVat0LEHEWNa4a4VGyYJ1feGSccOzFU= github.com/gonum/mathext v0.0.0-20181121095525-8a4bf007ea55/go.mod h1:fmo8aiSEWkJeiGXUJf+sPvuDgEFgqIoZSs843ePKrGg= +github.com/gonum/matrix v0.0.0-20181209220409-c518dec07be9 h1:V2IgdyerlBa/MxaEFRbV5juy/C3MGdj4ePi+g6ePIp4= github.com/gonum/matrix v0.0.0-20181209220409-c518dec07be9/go.mod h1:0EXg4mc1CNP0HCqCz+K4ts155PXIlUywf0wqN+GfPZw= +github.com/gonum/stat v0.0.0-20181125101827-41a0da705a5b h1:fbskpz/cPqWH8VqkQ7LJghFkl2KPAiIFUHrTJ2O3RGk= github.com/gonum/stat v0.0.0-20181125101827-41a0da705a5b/go.mod h1:Z4GIJBJO3Wa4gD4vbwQxXXZ+WHmW6E9ixmNrwvs0iZs= 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/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -272,15 +376,20 @@ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-github/v27 v27.0.6 h1:oiOZuBmGHvrGM1X9uNUAUlLgp5r1UUO/M/KnbHnLRlQ= github.com/google/go-github/v27 v27.0.6/go.mod h1:/0Gr8pJ55COkmv+S/yPKCczSkUPIM/LnFyubufRNIS0= +github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.1.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0= github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/mako v0.0.0-20190821191249-122f8dcef9e3 h1:/o5e44nTD/QEEiWPGSFT3bSqcq3Qg7q27N9bv4gKh5M= github.com/google/mako v0.0.0-20190821191249-122f8dcef9e3/go.mod h1:YzLcVlL+NqWnmUEPuhS1LxDDwGO9WNbVlEXaF4IH35g= +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/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0 h1:wCKgOCHuUEVfsaQLpPSJb7VdYCdTVZQAuOdYm1yc/60= github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= 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= @@ -289,7 +398,9 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c h1:Jx2lEv4nMccTJE+IIZOVIvk+DjNKlRsW0sm1uBr896U= github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0 h1:GOZbcHa3HfsPKPlmyPyN2KEohoMXOhdMbHrvbpl2QaA= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -302,16 +413,23 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/googleapis/gnostic v0.5.1 h1:A8Yhf6EtqTv9RMsU6MQTyrtV1TjWlR6xU9BsZIwuTCM= github.com/googleapis/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU= +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/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8= github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= 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-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/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= @@ -319,51 +437,79 @@ github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4G github.com/grpc-ecosystem/grpc-gateway v1.14.8 h1:hXClj+iFpmLM8i3lkO6i4Psli4P2qObQuQReiII26U8= github.com/grpc-ecosystem/grpc-gateway v1.14.8/go.mod h1:NZE8t6vs6TnwLL/ITkaK8W3ecMLGAbh2jXTclvpiwYo= github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= +github.com/hashicorp/consul/api v1.3.0 h1:HXNYlRkkM/t+Y/Yhxtwcy02dlYwIaoxzvxPnS+cqy78= github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/consul/sdk v0.3.0 h1:UOxjlb4xVNF93jak1mzzoBatyFju9nrkxpVwIp/QqxQ= github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +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/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-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3 h1:zKjpN5BK/P5lMYrLmBHdBULWbJ0XpYR+7NGzqkZzoD4= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o= github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-rootcerts v1.0.0 h1:Rqb66Oo1X/eSV1x66xbDccZjhJigjg0+e82kpwzSwCI= github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE= github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.0 h1:3vNe/fWF5CBgRIguda1meWhsZHy3m8gCJ5wx+dIzX/E= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go.net v0.0.1 h1:sNCoNyDEvN1xa+X0baata4RdcpKwcMS6DH+xwfqPgjw= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.0 h1:WhIgCr5a7AaVH6jPUwjtRuuE7/RDufnUvzIr48smyxs= github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= +github.com/hashicorp/memberlist v0.1.3 h1:EmmoJme1matNzb+hMpDuR/0sbJSUisxyqBGG676r31M= github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/serf v0.8.2 h1:YZ7UKsJv+hKjqGVUUbtE3HNj79Eln2oQ75tniF6iPt0= github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/hudl/fargo v1.3.0 h1:0U6+BtN6LhaYuTnIJq4Wyq5cpn6O2kWrxAtcqBmYY6w= 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-20200824232613-28f6c0f3b639 h1:mV02weKRL81bEnm8A0HT1/CAelMQDBuQIfLw8n+d6xI= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d h1:/WZQPMZNsjZ7IlCpsLGdQBINg5bxKQ1K1sh6awxLtkA= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= github.com/influxdata/tdigest v0.0.0-20180711151920-a7d76c6f093a/go.mod h1:9GkyshztGufsdPQWjH+ifgnIr3xNUL5syI70g2dzU1o= +github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9 h1:MHTrDWmQpHq/hkq+7cw9oYAt2PqUw52TZazRA0N7PGE= github.com/influxdata/tdigest v0.0.0-20181121200506-bf2b5ad3c0a9/go.mod h1:Js0mqiSBE6Ffsg94weZZ2c+v/ciT8QRHFOap7EKDrR0= +github.com/jessevdk/go-flags v1.4.0 h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +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/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= 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= @@ -373,56 +519,83 @@ github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/ github.com/json-iterator/go v1.1.11 h1:uVUAXhF2To8cbw/3xN3pxj6kk7TYKs98NIrTqPlMWAQ= github.com/json-iterator/go v1.1.11/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.9.1 h1:6QPYqodiu3GuPL+7mfx+NwDdp2eTkp9IfEUpgAwUN0o= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +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/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/kelseyhightower/envconfig v1.4.0 h1:Im6hONhd3pLkfDFsbRgu68RDNkGF1r3dvMUtDTo2cv8= github.com/kelseyhightower/envconfig v1.4.0/go.mod h1:cccZRl6mQpaq41TPp5QxidR+Sa3axMbJDNb//FQX6Gg= github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= +github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHzY= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= +github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.5 h1:hyz3dwM5QLc1Rfoz4FuWJQG5BN7tc6K1MndAUnGpQr4= github.com/kr/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743 h1:143Bb8f8DuGWck/xpNUOckBVYfFbBTnLevfRZ1aVVqo= 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 h1:vi1F1IQ8N7hNWytK9DpJsUfQhGuNSc19z330K6vl4zk= github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= +github.com/lyft/protoc-gen-validate v0.0.13 h1:KNt/RhmQTOLr7Aj8PsJ7mTronaFyx80mRTT9qF261dA= github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= +github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= +github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs= github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-runewidth v0.0.2 h1:UnlwIPBGaTZfPQ6T1IGzPI0EkYAQmT9fAEJ/poFC63o= github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.17 h1:BhJxdA7bH51vKFZSY8Sn9pR7++LREvg0eYFzHA452ew= github.com/miekg/dns v1.1.17/go.mod h1:WgzbA6oji13JREwiNsRDNfl7jYdPnmz+VEuLrA+/48M= +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/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0 h1:fzU/JVNcaqHQEcVFAKeR41fkiLdIPrefOvVG1VZ96U0= github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/gox v0.4.0 h1:lfGJxY7ToLJQjHHwi0EX6uYBdK78egf954SQl13PQJc= github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4= github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE= +github.com/mitchellh/iochan v1.0.0 h1:C+X3KsSTLFVBr/tK1eYN/vs4rJcvsiLU338UhYPJWeY= github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/moby/term v0.0.0-20200312100748-672ec06f55cd h1:aY7OQNf2XqY/JQ6qREWamhI/81os/agb2BAGpcx5yWI= github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= @@ -431,25 +604,37 @@ github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lN github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI= github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= 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 h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= 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 h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= +github.com/nats-io/jwt v0.3.2 h1:+RB5hMpXUUA2dfxuhBTEkMOrYmM+gKIZYS1KjSostMI= github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= +github.com/nats-io/nats-server/v2 v2.1.2 h1:i2Ly0B+1+rzNZHHWtD4ZwKi+OU5l+uQo1iDHZ2PmiIc= 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 h1:ik3HbLhZ0YABLto7iX80pZLPw/6dx3T+++MZJwLnMrQ= 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 h1:6JrEfig+HzTH85yxzhSVbjHRJv9cn0p6n3IngIcM5/k= github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= +github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +github.com/oklog/oklog v0.3.2 h1:wVfs8F+in6nTBMkA7CbRw+zZMIB7nNM825cM1wuzoTk= 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/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/oklog/ulid v1.3.1 h1:EGfNDEx6MqHz8B3uNV6QAib1UR2Lm97sHi3ocA6ESJ4= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= +github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5 h1:58+kh9C6jJVXYjt8IE48G2eWl6BjwU5Gj0gqY84fy78= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -468,34 +653,52 @@ github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1y github.com/onsi/gomega v1.10.2/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.13.0 h1:7lLHu94wT9Ij0o6EWWclhu0aOh32VxhkwEJvzuWPeak= github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= +github.com/op/go-logging v0.0.0-20160315200505-970db520ece7 h1:lDH9UUVJtmYCjyT0CI4q8xvlXPxeZ0gYCVvWbmPlp88= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= +github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492 h1:lM6RxxfUMrYL/f8bWEUqdXrANWtrL7Nndbm9iFN0DlU= github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= +github.com/opentracing/basictracer-go v1.0.0 h1:YyUAhaEfjoWXclZVJ9sGoNct7j4TVk7lZWlQw5UXuoo= 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 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5 h1:ZCnq+JUrvXcDVhX/xRolRBZifmabN1HcS1wrPSvxhrU= github.com/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= 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/openzipkin/zipkin-go v0.2.5 h1:UwtQQx2pyPIgWYHRg+epgdx1/HnBQTgN3/oIYEJTQzU= github.com/openzipkin/zipkin-go v0.2.5/go.mod h1:KpXfKdgRDnnhsxw4pNIH9Md5lyFqKUa4YDFlwRYAMyE= +github.com/pact-foundation/pact-go v1.0.4 h1:OYkFijGHoZAYbOIb1LWXrwKQbMMRUv1oQ89blD2Mh2Q= 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 h1:Lgl0gzECD8GnQ5QCWA8o6BtfL6mDH5rQgM4/fX3avOs= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= 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/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= +github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/performancecopilot/speed v3.0.0+incompatible h1:2WnRzIquHa5QxaJKShDkLM+sc0JPuwhXzK8OYOyt3Vg= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= +github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= +github.com/pierrec/lz4 v2.0.5+incompatible h1:2xWsjqPFWcplujydGg4WmhC/6fZqK42wMM8aXeqhl0I= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/profile v1.2.1 h1:F++O52m40owAmADcojzM+9gyjmMOY/T4oYJkgFDH8RE= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= +github.com/pkg/sftp v1.10.1 h1:VasscCm72135zRysgrJDKsntdmPN+OuU3+nnHYA9wyc= +github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= 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/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w= github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021 h1:0XM1XL/OFFJjXsYXlG30spTkV/E9+gmd5GD1w2HE8xM= github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= @@ -536,44 +739,69 @@ github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3x github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/statsd_exporter v0.20.0 h1:M0hQphnq2WyWKS5CefQL8PqWwBOBPhiAkyLo5l4ZYvE= github.com/prometheus/statsd_exporter v0.20.0/go.mod h1:YL3FWCG8JBBtaUSxAg4Gz2ZYu22bS84XM89ZQXXTWmQ= +github.com/prometheus/tsdb v0.7.1 h1:YZcsG11NqnK4czYLrWd9mpEuAJIHVQLwdrleYfszMAA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a h1:9ZKAASQSHhDYGoxY8uLVpewe1GDZ2vu2Tr/vTdVAkFQ= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0 h1:Ppwyp6VYCF1nvBTXL3trRso7mXMlRrw9ooo375wvi2s= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0 h1:RR9dF3JtopPvtkroDZuVD7qquD0bnHlKSqaQhgwt8yk= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f h1:UFr9zpz4xgTnIE5yIMtWAMngCdZ9p/+q6lTbgelo80M= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da h1:p3Vo3i64TCLY7gIfzeQaUJ+kppEO5WQG3cL8iE8tGHU= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= +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/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.6.0 h1:UBcNElsrwanuuMsnGSlYmtmgbb23qDR5dG+6X6Oo89I= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +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/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= +github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E= github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sony/gobreaker v0.4.1 h1:oMnRNZXX5j85zso6xCPRNPtmAycat+WcoKbklScLDgQ= github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= 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.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= +github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= +github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= +github.com/spf13/cobra v1.1.1 h1:KfztREH0tPxJJ+geloSLaAkaPkr4ki2Er5quFV1TDo4= github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= +github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk= github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.1/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/viper v1.7.0 h1:xVKxvI7ouOI5I+U9s2eeiUfMaWBVoXA3AWskkrqK0VM= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= +github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ainaU= github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271 h1:WhxRHzgeVGETMlmVfqhRn8RIeeNoPr2Czh33I4Zdccw= github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= +github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a h1:AhmOdSHeswKHBjhsLs/7+1voOxT+LLrSk/Nxvk35fug= github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= +github.com/streadway/quantile v0.0.0-20150917103942-b0c588724d25 h1:7z3LSn867ex6VSaahyKadf4WtSsJIgne6A1WLOAGM8A= github.com/streadway/quantile v0.0.0-20150917103942-b0c588724d25/go.mod h1:lbP8tGiBjZ5YWIc2fzuRpTaz0b/53vT6PEs3QuAWzuU= 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.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -582,23 +810,32 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= 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/tsenart/go-tsz v0.0.0-20180814232043-cdeb9e1e981e h1:bB5SXzQmSUsJCmjPDN9fKYx3SSDER5diSjlN6TefTCc= github.com/tsenart/go-tsz v0.0.0-20180814232043-cdeb9e1e981e/go.mod h1:SWZznP1z5Ki7hDT2ioqiFKEse8K9tU2OUvaRI0NeGQo= +github.com/tsenart/vegeta/v12 v12.8.4 h1:UQ7tG7WkDorKj0wjx78Z4/vsMBP8RJQMGJqRVrkvngg= github.com/tsenart/vegeta/v12 v12.8.4/go.mod h1:ZiJtwLn/9M4fTPdMY7bdbIeyNeFVE8/AHbWFqCsUuho= github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= +github.com/urfave/cli v1.22.1 h1:+mkCCcOFKPnCmVYVcURKps1Xe+3zP90gSYGNfRkjoIY= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +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/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.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5 h1:dPmz1Snjq0kmkz159iL7S6WzdahUTHnHB5M56WFVifs= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/bbolt v1.3.5 h1:XAzx9gjCb0Rxj7EoqcClPD1d5ZBxZJk0jbuoPHenBt0= 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.20200910180754-dd1b699fc489 h1:1JFLBqwIgdyHN1ZtgjTBwO+blA6gVOmZurpiMEsETKo= go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -627,6 +864,7 @@ go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKY go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.7.0 h1:zaiO/rmgFjbmCXdSYJWQcdvOCsthmdaHfr3Gm2Kx4Ec= go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= +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/zap v1.8.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= @@ -641,6 +879,7 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -657,8 +896,10 @@ golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6 h1:QE6XYQK6naiK1EPAe1g/ILLxN5RBoH5xkJk3CqlMI/Y= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b h1:+qEpEAPhDZ1o0x3tHzZTQDArnOixOzGD9HUJfcg0mb4= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= @@ -673,6 +914,7 @@ golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPI golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5 h1:2M3HP5CCK1Si9FQhwnzYhXdG6DXeebvUHFpre8QvbyI= golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028 h1:4+4C/Iv2U4fMZBiMCc98MG1In4gJY5YRhtpDNeDeHWs= golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= @@ -902,7 +1144,9 @@ golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8T gomodules.xyz/jsonpatch/v2 v2.1.0/go.mod h1:IhYNNY4jnS53ZnfE4PAmpKtDpTCj1JFXc+3mwe7XcUU= gomodules.xyz/jsonpatch/v2 v2.2.0 h1:4pT439QV83L+G9FkcCriY6EkpcK6r6bK+A5FBUMI7qY= gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY= +gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca h1:PupagGYwj8+I4ubCxcmcBRk3VlUWtTg5huQpZR9flmE= gonum.org/v1/gonum v0.0.0-20181121035319-3f7ecaa7e8ca/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= +gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6 h1:4WsZyVtkthqrHTbDCJfiTs8IWNYE4uvsSDgaV6xpp+o= gonum.org/v1/netlib v0.0.0-20181029234149-ec6d1f5cefe6/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= @@ -1016,18 +1260,27 @@ gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/cheggaaa/pb.v1 v1.0.25 h1:Ev7yu1/f6+d+b3pi5vPdRPc6nNtP1umSfcWiEfRqv6I= gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0 h1:0vLT13EuvQ0hNvakwLuFZ/jYrLp5F3kcWHXdRggjCE8= 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/gcfg.v1 v1.2.3 h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs= gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.51.0 h1:AQvPpx3LzTDM0AjnIRlVFwFFGC+npRopjZxLJj6gdno= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= +gopkg.in/resty.v1 v1.12.0 h1:CuXP0Pjfw9rOuY6EP+UvtNvt5DSqHpIxILZKT/quCZI= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/square/go-jose.v2 v2.2.2 h1:orlkJ3myw8CN1nVQHBFfloD+L3egixIa4FvUP6RosSA= gopkg.in/square/go-jose.v2 v2.2.2/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/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= 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.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -1043,7 +1296,9 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/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/v3 v3.0.2 h1:kG1BFyqVHuQoVQiR1bWGnfz/fmHvvuiSPIV7rvl360E= 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-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -1052,6 +1307,7 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4 h1:UoveltGrhghAA7ePc+e+QYDHXrBps2PqFZiHkGR/xK8= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= k8s.io/api v0.20.2/go.mod h1:d7n6Ehyzx+S+cE3VhTGfVNNqtGc/oL9DCdYYahlurV8= @@ -1065,12 +1321,14 @@ k8s.io/apimachinery v0.20.2/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRp k8s.io/apimachinery v0.20.7 h1:tBfhql7OggSCahvASeEpLRzvxc7FK77wNivi1uXCQWM= k8s.io/apimachinery v0.20.7/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= k8s.io/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= +k8s.io/apiserver v0.20.7 h1:kmj4lX5evfdm8h07jRjuSANvRH0kPlXTq6LOSGT6n/k= k8s.io/apiserver v0.20.7/go.mod h1:7gbB7UjDdP1/epYBGnIUE6jWY4Wpz99cZ7igfDa9rv4= k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= k8s.io/client-go v0.20.2/go.mod h1:kH5brqWqp7HDxUFKoEgiI4v8G1xzbe9giaCenUWJzgE= k8s.io/client-go v0.20.7 h1:Ot22456XfYAWrCWddw/quevMrFHqP7s1qT499FoumVU= k8s.io/client-go v0.20.7/go.mod h1:uGl3qh/Jy3cTF1nDoIKBqUZlRWnj/EM+/leAXETKRuA= k8s.io/code-generator v0.20.1/go.mod h1:UsqdF+VX4PU2g46NC2JRs4gc+IfrctnwHb76RNbWHJg= +k8s.io/code-generator v0.20.7 h1:iXz1ME6EQqoCkLefa7bcniKHu0SzgbxsFV1RlBcfypc= k8s.io/code-generator v0.20.7/go.mod h1:i6FmG+QxaLxvJsezvZp0q/gAEzzOz3U53KFibghWToU= k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= k8s.io/component-base v0.20.2/go.mod h1:pzFtCiwe/ASD0iV7ySMu8SYVJjCapNM9bjvk7ptpKh0= @@ -1078,6 +1336,7 @@ k8s.io/component-base v0.20.7 h1:TdRMMGxxxhcArvkem+FVqBljPOczs9j+tVGpYRM6TM8= k8s.io/component-base v0.20.7/go.mod h1:878UWprXC07P2CWFg+jjvTfxJSlkHp1v2m1MTkNQnJY= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= +k8s.io/gengo v0.0.0-20210203185629-de9496dff47b h1:bAU8IlrMA6KbP0dIg/sVSJn95pDCUHDZx0DpTGrf2v4= k8s.io/gengo v0.0.0-20210203185629-de9496dff47b/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= @@ -1090,14 +1349,20 @@ k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAG k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= k8s.io/utils v0.0.0-20210111153108-fddb29f9d009 h1:0T5IaWHO3sJTEmCP6mUlBvMukxPKUQWqiI/YuiBNMiQ= k8s.io/utils v0.0.0-20210111153108-fddb29f9d009/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= +knative.dev/hack v0.0.0-20210622141627-e28525d8d260 h1:f2eMtOubAOc/Q7JlvFPDKXiPlJVK+VpX2Cot8hRzCgQ= knative.dev/hack v0.0.0-20210622141627-e28525d8d260/go.mod h1:PHt8x8yX5Z9pPquBEfIj0X66f8iWkWfR0S/sarACJrI= knative.dev/pkg v0.0.0-20210628225612-51cfaabbcdf6 h1:DEZJpuiDMEzdJQZI0+ZAqsLe5uwsHHYOgrjcg0Sv8wA= knative.dev/pkg v0.0.0-20210628225612-51cfaabbcdf6/go.mod h1:kGegTnbZ+ljFjAE3E1+8wgaH2LMv8qYi+72o3F3cbdc= +pgregory.net/rapid v0.3.3 h1:jCjBsY4ln4Atz78QoBWxUEvAHaFyNDQg9+WU62aCn1U= pgregory.net/rapid v0.3.3/go.mod h1:UYpPVyjFHzYBGHIxLFoupi8vwk6rXNzRY9OMvVxFIOU= +rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0 h1:9JKUTTIUgS6kzR9mK1YuGKv6Nl+DijDNIc0ghT58FaY= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0 h1:7uVkIFmeBqHfdjD+gZwtXXI+RODJ2Wc4O7MPEh/QiW4= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= +sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15 h1:4uqm9Mv+w2MmBYD+F4qf/v6tDFUdPOk29C095RbU5mY= sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= sigs.k8s.io/controller-runtime v0.8.3 h1:GMHvzjTmaWHQB8HadW+dIvBoJuLvZObYJ5YoZruPRao= sigs.k8s.io/controller-runtime v0.8.3/go.mod h1:U/l+DUopBc1ecfRZ5aviA9JDmGFQKvLf5YkZNx2e0sU= @@ -1107,4 +1372,5 @@ sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK sigs.k8s.io/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o= sigs.k8s.io/yaml v1.2.0 h1:kr/MCeFWJWTwyaHoR9c8EjH9OumOmoF9YGiZd7lFm/Q= sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= +sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0 h1:ucqkfpjg9WzSUubAO62csmucvxl4/JeW3F4I4909XkM= sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= diff --git a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go index 15bbead71549..d24b5457bf9e 100644 --- a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go +++ b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go @@ -38,10 +38,10 @@ func (s *ProvisionerSpec) SetDefaults(ctx context.Context) {} // The returned copy might be complemented by dynamic default values which // must not be hoisted (saved) into the original Provisioner CRD as those // default values might change over time (e.g. rolling upgrade of CABundle, ...). -func (p *Provisioner) WithDynamicDefaults(ctx context.Context) (_ Provisioner, err error) { +func (p *Provisioner) WithDynamicDefaults(ctx context.Context) (_ *Provisioner, err error) { provisioner := *p.DeepCopy() provisioner.Spec, err = provisioner.Spec.withDynamicDefaults(ctx) - return provisioner, err + return &provisioner, err } // WithDefaults returns a copy of this ProvisionerSpec with some empty @@ -71,7 +71,7 @@ func (c *Cluster) getCABundle(ctx context.Context) (*string, error) { } // Otherwise, fallback to the in-cluster configuration. - binary, err := fs.ReadFile(filesys.For(ctx), InClusterCABundlePath) + binary, err := fs.ReadFile(filesys.For(ctx), string("/var/run/secrets/kubernetes.io/serviceaccount/ca.crt")) if err != nil { if errors.Is(err, fs.ErrNotExist) { return nil, nil diff --git a/pkg/cloudprovider/aws/cloudprovider.go b/pkg/cloudprovider/aws/cloudprovider.go index 862e6ae42c96..e245b28bfd72 100644 --- a/pkg/cloudprovider/aws/cloudprovider.go +++ b/pkg/cloudprovider/aws/cloudprovider.go @@ -177,6 +177,7 @@ func (c *CloudProvider) ValidateSpec(ctx context.Context, spec *v1alpha3.Provisi if spec.Cluster.Name == nil || len(*spec.Cluster.Name) == 0 { errs = errs.Also(apis.ErrMissingField("name")).ViaField("cluster") } + fmt.Printf("\nspec.Cluster.CABundle: %v\n", spec.Cluster.CABundle) if spec.Cluster.CABundle == nil || len(*spec.Cluster.CABundle) == 0 { errs = errs.Also(apis.ErrMissingField("caBundle")).ViaField("cluster") } diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index 7b293bfdba6c..b00024b3c614 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -16,6 +16,7 @@ package aws import ( "context" + "fmt" "io/fs" "testing" "time" @@ -31,6 +32,7 @@ import ( "github.com/awslabs/karpenter/pkg/controllers/allocation/scheduling" "github.com/awslabs/karpenter/pkg/test" . "github.com/awslabs/karpenter/pkg/test/expectations" + "github.com/awslabs/karpenter/pkg/utils/filesys" "github.com/awslabs/karpenter/pkg/utils/parallel" "github.com/awslabs/karpenter/pkg/utils/resources" . "github.com/onsi/ginkgo" @@ -69,7 +71,9 @@ func (s *singletonFS) ReadFile(name string) ([]byte, error) { } func TestAPIs(t *testing.T) { - ctx = TestContextWithLogger(t) + ctx = filesys.Inject(TestContextWithLogger(t), &singletonFS{filename: v1alpha3.InClusterCABundlePath, + contents: []byte("abc"), + }) RegisterFailHandler(Fail) RunSpecs(t, "CloudProvider/AWS") } @@ -115,7 +119,8 @@ var _ = Describe("Allocation", func() { var provisioner *v1alpha3.Provisioner BeforeEach(func() { - provisioner = &v1alpha3.Provisioner{ + var err error + provisioner, err = (&v1alpha3.Provisioner{ ObjectMeta: metav1.ObjectMeta{ Name: v1alpha3.DefaultProvisioner.Name, }, @@ -123,10 +128,11 @@ var _ = Describe("Allocation", func() { Cluster: v1alpha3.Cluster{ Name: ptr.String("test-cluster"), Endpoint: "https://test-cluster", - CABundle: ptr.String("dGVzdC1jbHVzdGVyCg=="), + //CABundle: ptr.String("dGVzdC1jbHVzdGVyCg=="), }, }, - } + }).WithDynamicDefaults(ctx) + Expect(err).To(BeNil()) fakeEC2API.Reset() ExpectCleanedUp(env.Client) launchTemplateCache.Flush() @@ -574,8 +580,15 @@ var _ = Describe("Allocation", func() { Context("Validation", func() { Context("Cluster", func() { It("should default in missing fields", func() { - provisioner.Spec.Cluster.CABundle = nil - Expect(provisioner.Spec.Validate(ctx)).To(Succeed()) + //provisioner.Spec.Cluster.CABundle = nil + //fmt.Printf("grond: %v\n", filesys.For(ctx)) + if v1alpha3.SpecValidationHook == nil { + fmt.Printf("\nv1alpha3.SpecValidationHook: nil\n") + } else { + fmt.Printf("\nv1alpha3.SpecValidationHook: non nil\n") + } + //v1alpha3.SpecValidationHook = nil + Expect(provisioner.Validate(ctx)).To(Succeed()) }) It("should fail if aws required fields are empty", func() { for _, cluster := range []v1alpha3.Cluster{ diff --git a/pkg/controllers/allocation/controller.go b/pkg/controllers/allocation/controller.go index 3f861d4260bd..20e9189f6153 100644 --- a/pkg/controllers/allocation/controller.go +++ b/pkg/controllers/allocation/controller.go @@ -178,9 +178,9 @@ func (c *Controller) provisionerFor(ctx context.Context, name types.NamespacedNa // loop iteration. defaulted, err := provisioner.WithDynamicDefaults(ctx) if err != nil { - return &defaulted, fmt.Errorf("setting dynamic default values, %w", err) + return defaulted, fmt.Errorf("setting dynamic default values, %w", err) } - return &defaulted, nil + return defaulted, nil } // podToProvisioner is a function handler to transform pod objs to provisioner reconcile requests diff --git a/pkg/utils/filesys/filesys.go b/pkg/utils/filesys/filesys.go index c6f8d4063ca7..696e927f394e 100644 --- a/pkg/utils/filesys/filesys.go +++ b/pkg/utils/filesys/filesys.go @@ -15,17 +15,30 @@ package filesys import ( "context" "io/fs" - "os" + + "github.com/spf13/afero" ) +type contextKey string + const ( - KarpenterFS = "karpenter.sh/fs" + KarpenterFS contextKey = "karpenter.sh/fs" ) -func Inject(ctx context.Context) context.Context { - return context.WithValue(ctx, KarpenterFS, os.DirFS("/")) +// Inject adds an fs.ReadFileFS that should be used by tests (only) +// to mock out the filesystem. +func Inject(ctx context.Context, override fs.ReadFileFS) context.Context { + return context.WithValue(ctx, KarpenterFS, override) } -func For(ctx context.Context) fs.FS { - return ctx.Value(KarpenterFS).(fs.FS) +// For returns an fs.ReadFileFS, normally a pass-through to the host +// filesystem, except in the context of a test. +func For(ctx context.Context) fs.ReadFileFS { + retval := ctx.Value(KarpenterFS) + if retval == nil { + // Use afero because os.DirFS() doesn't resolve aboslute paths + // anchored at '/' idiomatically. + return afero.NewIOFS(afero.NewOsFs()) + } + return retval.(fs.ReadFileFS) } From 4510a61f8dd7ecb4063c5276b76fa2d938df1d5e Mon Sep 17 00:00:00 2001 From: jacob Date: Sat, 28 Aug 2021 17:12:15 -0700 Subject: [PATCH 10/34] clean up stray debug lines --- pkg/cloudprovider/aws/cloudprovider.go | 1 - pkg/cloudprovider/aws/suite_test.go | 14 ++------------ 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/pkg/cloudprovider/aws/cloudprovider.go b/pkg/cloudprovider/aws/cloudprovider.go index e245b28bfd72..862e6ae42c96 100644 --- a/pkg/cloudprovider/aws/cloudprovider.go +++ b/pkg/cloudprovider/aws/cloudprovider.go @@ -177,7 +177,6 @@ func (c *CloudProvider) ValidateSpec(ctx context.Context, spec *v1alpha3.Provisi if spec.Cluster.Name == nil || len(*spec.Cluster.Name) == 0 { errs = errs.Also(apis.ErrMissingField("name")).ViaField("cluster") } - fmt.Printf("\nspec.Cluster.CABundle: %v\n", spec.Cluster.CABundle) if spec.Cluster.CABundle == nil || len(*spec.Cluster.CABundle) == 0 { errs = errs.Also(apis.ErrMissingField("caBundle")).ViaField("cluster") } diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index b00024b3c614..62570ba80fdd 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -16,7 +16,6 @@ package aws import ( "context" - "fmt" "io/fs" "testing" "time" @@ -60,7 +59,7 @@ type singletonFS struct { } func (s *singletonFS) Open(name string) (fs.File, error) { - panic("not implemented") + panic("not implemented; only ReadFile needed") } func (s *singletonFS) ReadFile(name string) ([]byte, error) { @@ -72,7 +71,7 @@ func (s *singletonFS) ReadFile(name string) ([]byte, error) { func TestAPIs(t *testing.T) { ctx = filesys.Inject(TestContextWithLogger(t), &singletonFS{filename: v1alpha3.InClusterCABundlePath, - contents: []byte("abc"), + contents: []byte("fake CA Bundle data"), }) RegisterFailHandler(Fail) RunSpecs(t, "CloudProvider/AWS") @@ -128,7 +127,6 @@ var _ = Describe("Allocation", func() { Cluster: v1alpha3.Cluster{ Name: ptr.String("test-cluster"), Endpoint: "https://test-cluster", - //CABundle: ptr.String("dGVzdC1jbHVzdGVyCg=="), }, }, }).WithDynamicDefaults(ctx) @@ -580,14 +578,6 @@ var _ = Describe("Allocation", func() { Context("Validation", func() { Context("Cluster", func() { It("should default in missing fields", func() { - //provisioner.Spec.Cluster.CABundle = nil - //fmt.Printf("grond: %v\n", filesys.For(ctx)) - if v1alpha3.SpecValidationHook == nil { - fmt.Printf("\nv1alpha3.SpecValidationHook: nil\n") - } else { - fmt.Printf("\nv1alpha3.SpecValidationHook: non nil\n") - } - //v1alpha3.SpecValidationHook = nil Expect(provisioner.Validate(ctx)).To(Succeed()) }) It("should fail if aws required fields are empty", func() { From f3971852b7aac73c68b8095464f63be3cb3f8317 Mon Sep 17 00:00:00 2001 From: jacob Date: Sat, 28 Aug 2021 17:13:37 -0700 Subject: [PATCH 11/34] remove unnecessary inject --- cmd/controller/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/controller/main.go b/cmd/controller/main.go index 9e9ba87c5f85..4a79261ec393 100644 --- a/cmd/controller/main.go +++ b/cmd/controller/main.go @@ -68,7 +68,7 @@ func main() { clientSet := kubernetes.NewForConfigOrDie(config) // 1. Setup logger and watch for changes to log level - ctx := filesys.Inject(LoggingContextOrDie(config, clientSet)) + ctx := LoggingContextOrDie(config, clientSet) // 2. Setup controller runtime controller cloudProvider := registry.NewCloudProvider(ctx, cloudprovider.Options{ClientSet: clientSet}) From 58e645973715d7728f01a1492979b388326a8e81 Mon Sep 17 00:00:00 2001 From: jacob Date: Sat, 28 Aug 2021 17:14:34 -0700 Subject: [PATCH 12/34] remove unnecessary filesys.Inject --- cmd/webhook/main.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cmd/webhook/main.go b/cmd/webhook/main.go index dab7cedc3da0..f7f0a73af27a 100644 --- a/cmd/webhook/main.go +++ b/cmd/webhook/main.go @@ -21,7 +21,6 @@ import ( "github.com/awslabs/karpenter/pkg/apis" "github.com/awslabs/karpenter/pkg/cloudprovider" "github.com/awslabs/karpenter/pkg/cloudprovider/registry" - "github.com/awslabs/karpenter/pkg/utils/filesys" "k8s.io/client-go/kubernetes" "knative.dev/pkg/configmap" "knative.dev/pkg/controller" @@ -99,5 +98,5 @@ func newConfigValidationController(ctx context.Context, cmw configmap.Watcher) * } func InjectContext(ctx context.Context) context.Context { - return filesys.Inject(ctx) + return ctx } From 78e0433cd5cd80fb51b90dc20ff78c0e46e16b4f Mon Sep 17 00:00:00 2001 From: jacob Date: Sat, 28 Aug 2021 17:15:46 -0700 Subject: [PATCH 13/34] minor formatting --- pkg/cloudprovider/aws/suite_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index 62570ba80fdd..3eee67cf0b78 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -70,7 +70,8 @@ func (s *singletonFS) ReadFile(name string) ([]byte, error) { } func TestAPIs(t *testing.T) { - ctx = filesys.Inject(TestContextWithLogger(t), &singletonFS{filename: v1alpha3.InClusterCABundlePath, + ctx = filesys.Inject(TestContextWithLogger(t), &singletonFS{ + filename: v1alpha3.InClusterCABundlePath, contents: []byte("fake CA Bundle data"), }) RegisterFailHandler(Fail) From b91394e9d1fed62f007405f58f5cbb08539d2fde Mon Sep 17 00:00:00 2001 From: jacob Date: Sat, 28 Aug 2021 17:16:11 -0700 Subject: [PATCH 14/34] remove unnecessary import --- cmd/controller/main.go | 1 - 1 file changed, 1 deletion(-) diff --git a/cmd/controller/main.go b/cmd/controller/main.go index 4a79261ec393..cd4aac145901 100644 --- a/cmd/controller/main.go +++ b/cmd/controller/main.go @@ -26,7 +26,6 @@ import ( "github.com/awslabs/karpenter/pkg/controllers/allocation" "github.com/awslabs/karpenter/pkg/controllers/node" "github.com/awslabs/karpenter/pkg/controllers/termination" - "github.com/awslabs/karpenter/pkg/utils/filesys" "github.com/go-logr/zapr" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/kubernetes" From 5f0c1023d6ba192cf988320bcbade0c5c3ae4d28 Mon Sep 17 00:00:00 2001 From: jacob Date: Sat, 28 Aug 2021 17:17:51 -0700 Subject: [PATCH 15/34] fix stray debugging change --- pkg/apis/provisioning/v1alpha3/provisioner_defaults.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go index d24b5457bf9e..3fe8548d6783 100644 --- a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go +++ b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go @@ -71,7 +71,7 @@ func (c *Cluster) getCABundle(ctx context.Context) (*string, error) { } // Otherwise, fallback to the in-cluster configuration. - binary, err := fs.ReadFile(filesys.For(ctx), string("/var/run/secrets/kubernetes.io/serviceaccount/ca.crt")) + binary, err := fs.ReadFile(filesys.For(ctx), InClusterCABundlePath) if err != nil { if errors.Is(err, fs.ErrNotExist) { return nil, nil From 459a905ad63fa95bf4833486908fc342ff2fb888 Mon Sep 17 00:00:00 2001 From: jacob Date: Sat, 28 Aug 2021 17:22:27 -0700 Subject: [PATCH 16/34] add helpful comment that explains why test actually works --- pkg/cloudprovider/aws/suite_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index 3eee67cf0b78..9d6437826f56 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -589,7 +589,7 @@ var _ = Describe("Allocation", func() { {Endpoint: "https://test-cluster", Name: ptr.String("test-cluster")}, {Name: ptr.String("test-cluster")}, } { - provisioner.Spec.Cluster = cluster + provisioner.Spec.Cluster = cluster // undo any defaulting Expect(provisioner.Validate(ctx)).ToNot(Succeed()) } }) From ec5e164b79c0e25b5696baa520cb2a96ae66f654 Mon Sep 17 00:00:00 2001 From: jacob Date: Sun, 29 Aug 2021 17:56:05 -0700 Subject: [PATCH 17/34] address PR comments --- pkg/apis/provisioning/v1alpha3/provisioner_defaults.go | 4 ++-- pkg/cloudprovider/aws/suite_test.go | 4 ++-- .../{filesys/filesys.go => filesystem/filesystem.go} | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) rename pkg/utils/{filesys/filesys.go => filesystem/filesystem.go} (88%) diff --git a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go index 3fe8548d6783..5170520fd6ee 100644 --- a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go +++ b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go @@ -20,7 +20,7 @@ import ( "errors" "io/fs" - "github.com/awslabs/karpenter/pkg/utils/filesys" + "github.com/awslabs/karpenter/pkg/utils/filesystem" ) const ( @@ -71,7 +71,7 @@ func (c *Cluster) getCABundle(ctx context.Context) (*string, error) { } // Otherwise, fallback to the in-cluster configuration. - binary, err := fs.ReadFile(filesys.For(ctx), InClusterCABundlePath) + binary, err := fs.ReadFile(filesystem.For(ctx), InClusterCABundlePath) if err != nil { if errors.Is(err, fs.ErrNotExist) { return nil, nil diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index 9d6437826f56..21038f53df70 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -31,7 +31,7 @@ import ( "github.com/awslabs/karpenter/pkg/controllers/allocation/scheduling" "github.com/awslabs/karpenter/pkg/test" . "github.com/awslabs/karpenter/pkg/test/expectations" - "github.com/awslabs/karpenter/pkg/utils/filesys" + "github.com/awslabs/karpenter/pkg/utils/filesystem" "github.com/awslabs/karpenter/pkg/utils/parallel" "github.com/awslabs/karpenter/pkg/utils/resources" . "github.com/onsi/ginkgo" @@ -70,7 +70,7 @@ func (s *singletonFS) ReadFile(name string) ([]byte, error) { } func TestAPIs(t *testing.T) { - ctx = filesys.Inject(TestContextWithLogger(t), &singletonFS{ + ctx = filesystem.Inject(TestContextWithLogger(t), &singletonFS{ filename: v1alpha3.InClusterCABundlePath, contents: []byte("fake CA Bundle data"), }) diff --git a/pkg/utils/filesys/filesys.go b/pkg/utils/filesystem/filesystem.go similarity index 88% rename from pkg/utils/filesys/filesys.go rename to pkg/utils/filesystem/filesystem.go index 696e927f394e..dcf89811d9f6 100644 --- a/pkg/utils/filesys/filesys.go +++ b/pkg/utils/filesystem/filesystem.go @@ -10,7 +10,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package filesys +package filesystem import ( "context" @@ -22,19 +22,19 @@ import ( type contextKey string const ( - KarpenterFS contextKey = "karpenter.sh/fs" + fsKey contextKey = "karpenter.sh/fs" ) // Inject adds an fs.ReadFileFS that should be used by tests (only) // to mock out the filesystem. func Inject(ctx context.Context, override fs.ReadFileFS) context.Context { - return context.WithValue(ctx, KarpenterFS, override) + return context.WithValue(ctx, fsKey, override) } // For returns an fs.ReadFileFS, normally a pass-through to the host // filesystem, except in the context of a test. func For(ctx context.Context) fs.ReadFileFS { - retval := ctx.Value(KarpenterFS) + retval := ctx.Value(fsKey) if retval == nil { // Use afero because os.DirFS() doesn't resolve aboslute paths // anchored at '/' idiomatically. From b9228a786fe3de584e9a828a501402c447fb705e Mon Sep 17 00:00:00 2001 From: jacob Date: Sun, 29 Aug 2021 18:00:27 -0700 Subject: [PATCH 18/34] address pr fback --- pkg/cloudprovider/aws/cloudprovider.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkg/cloudprovider/aws/cloudprovider.go b/pkg/cloudprovider/aws/cloudprovider.go index 862e6ae42c96..a110b3589033 100644 --- a/pkg/cloudprovider/aws/cloudprovider.go +++ b/pkg/cloudprovider/aws/cloudprovider.go @@ -33,6 +33,7 @@ import ( v1 "k8s.io/api/core/v1" "knative.dev/pkg/apis" "knative.dev/pkg/logging" + "knative.dev/pkg/ptr" ) const ( @@ -174,10 +175,10 @@ func (c *CloudProvider) ValidateConstraints(ctx context.Context, constraints *v1 // Validate cloud provider specific components of the cluster spec. func (c *CloudProvider) ValidateSpec(ctx context.Context, spec *v1alpha3.ProvisionerSpec) (errs *apis.FieldError) { - if spec.Cluster.Name == nil || len(*spec.Cluster.Name) == 0 { + if ptr.StringValue(spec.Cluster.Name) == "" { errs = errs.Also(apis.ErrMissingField("name")).ViaField("cluster") } - if spec.Cluster.CABundle == nil || len(*spec.Cluster.CABundle) == 0 { + if ptr.StringValue(spec.Cluster.CABundle) == "" { errs = errs.Also(apis.ErrMissingField("caBundle")).ViaField("cluster") } return errs From 982ebd16ba651b0f2f4148345f754e73c1d2523e Mon Sep 17 00:00:00 2001 From: jacob Date: Sun, 29 Aug 2021 19:08:58 -0700 Subject: [PATCH 19/34] switch to afero everywhere because io/fs just doesn't like absolute paths --- .../v1alpha3/provisioner_defaults.go | 4 +++- pkg/cloudprovider/aws/fake/filesystem.go | 20 ++++++++++++++++ pkg/cloudprovider/aws/suite_test.go | 23 ++----------------- pkg/utils/filesystem/filesystem.go | 13 +++++------ 4 files changed, 31 insertions(+), 29 deletions(-) create mode 100644 pkg/cloudprovider/aws/fake/filesystem.go diff --git a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go index 5170520fd6ee..f557841d3da6 100644 --- a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go +++ b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go @@ -20,6 +20,8 @@ import ( "errors" "io/fs" + "github.com/spf13/afero" + "github.com/awslabs/karpenter/pkg/utils/filesystem" ) @@ -71,7 +73,7 @@ func (c *Cluster) getCABundle(ctx context.Context) (*string, error) { } // Otherwise, fallback to the in-cluster configuration. - binary, err := fs.ReadFile(filesystem.For(ctx), InClusterCABundlePath) + binary, err := afero.ReadFile(filesystem.For(ctx), InClusterCABundlePath) if err != nil { if errors.Is(err, fs.ErrNotExist) { return nil, nil diff --git a/pkg/cloudprovider/aws/fake/filesystem.go b/pkg/cloudprovider/aws/fake/filesystem.go new file mode 100644 index 000000000000..d8703106efb5 --- /dev/null +++ b/pkg/cloudprovider/aws/fake/filesystem.go @@ -0,0 +1,20 @@ +package fake + +import ( + "fmt" + "path/filepath" + + "github.com/awslabs/karpenter/pkg/apis/provisioning/v1alpha3" + "github.com/spf13/afero" +) + +func Filesystem() afero.Fs { + fakeFS := afero.NewMemMapFs() + if err := fakeFS.MkdirAll(filepath.Dir(v1alpha3.InClusterCABundlePath), 0755); err != nil { + panic(fmt.Sprintf("unable to make directory for %s: %v", v1alpha3.InClusterCABundlePath, err)) + } + if err := afero.WriteFile(fakeFS, v1alpha3.InClusterCABundlePath, []byte("fake CA Bundle data"), 0644); err != nil { + panic(fmt.Sprintf("unable to write file %s: %v", v1alpha3.InClusterCABundlePath, err)) + } + return fakeFS +} diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index 21038f53df70..033fee0e3376 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -16,7 +16,6 @@ package aws import ( "context" - "io/fs" "testing" "time" @@ -53,32 +52,14 @@ var launchTemplateCache *cache.Cache var fakeEC2API *fake.EC2API var controller reconcile.Reconciler -type singletonFS struct { - filename string - contents []byte -} - -func (s *singletonFS) Open(name string) (fs.File, error) { - panic("not implemented; only ReadFile needed") -} - -func (s *singletonFS) ReadFile(name string) ([]byte, error) { - if name == s.filename { - return s.contents, nil - } - return nil, fs.ErrNotExist -} - func TestAPIs(t *testing.T) { - ctx = filesystem.Inject(TestContextWithLogger(t), &singletonFS{ - filename: v1alpha3.InClusterCABundlePath, - contents: []byte("fake CA Bundle data"), - }) + ctx = filesystem.Inject(TestContextWithLogger(t), fake.Filesystem()) RegisterFailHandler(Fail) RunSpecs(t, "CloudProvider/AWS") } var _ = BeforeSuite(func() { + launchTemplateCache = cache.New(CacheTTL, CacheCleanupInterval) fakeEC2API = &fake.EC2API{} instanceTypeProvider := NewInstanceTypeProvider(fakeEC2API) diff --git a/pkg/utils/filesystem/filesystem.go b/pkg/utils/filesystem/filesystem.go index dcf89811d9f6..2d612aa15535 100644 --- a/pkg/utils/filesystem/filesystem.go +++ b/pkg/utils/filesystem/filesystem.go @@ -14,7 +14,6 @@ package filesystem import ( "context" - "io/fs" "github.com/spf13/afero" ) @@ -27,18 +26,18 @@ const ( // Inject adds an fs.ReadFileFS that should be used by tests (only) // to mock out the filesystem. -func Inject(ctx context.Context, override fs.ReadFileFS) context.Context { +func Inject(ctx context.Context, override afero.Fs) context.Context { return context.WithValue(ctx, fsKey, override) } // For returns an fs.ReadFileFS, normally a pass-through to the host // filesystem, except in the context of a test. -func For(ctx context.Context) fs.ReadFileFS { +func For(ctx context.Context) afero.Fs { retval := ctx.Value(fsKey) if retval == nil { - // Use afero because os.DirFS() doesn't resolve aboslute paths - // anchored at '/' idiomatically. - return afero.NewIOFS(afero.NewOsFs()) + // Use afero because io/fs does not allow absolute paths like + // `/var/something`. + return afero.NewOsFs() } - return retval.(fs.ReadFileFS) + return retval.(afero.Fs) } From 139931e05eb3d39ce5de666aac13acb3477fef21 Mon Sep 17 00:00:00 2001 From: jacob Date: Sun, 29 Aug 2021 19:09:29 -0700 Subject: [PATCH 20/34] minor cleanup --- pkg/apis/provisioning/v1alpha3/provisioner_defaults.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go index f557841d3da6..1652c5512fe7 100644 --- a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go +++ b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go @@ -20,9 +20,8 @@ import ( "errors" "io/fs" - "github.com/spf13/afero" - "github.com/awslabs/karpenter/pkg/utils/filesystem" + "github.com/spf13/afero" ) const ( From 08e48843ae8cd50a00a1ead88eeb594bd9689d5e Mon Sep 17 00:00:00 2001 From: jacob Date: Mon, 30 Aug 2021 08:24:16 -0700 Subject: [PATCH 21/34] Address PR feedback from rustrial@ --- .../v1alpha3/provisioner_validation.go | 30 +++++++++++++++---- pkg/cloudprovider/aws/cloudprovider.go | 2 +- pkg/cloudprovider/aws/suite_test.go | 8 +++++ 3 files changed, 34 insertions(+), 6 deletions(-) diff --git a/pkg/apis/provisioning/v1alpha3/provisioner_validation.go b/pkg/apis/provisioning/v1alpha3/provisioner_validation.go index 4b9deb6146ef..5f8078152600 100644 --- a/pkg/apis/provisioning/v1alpha3/provisioner_validation.go +++ b/pkg/apis/provisioning/v1alpha3/provisioner_validation.go @@ -86,14 +86,17 @@ func (s *ProvisionerSpec) validateRestrictedLabels() (errs *apis.FieldError) { return errs } -func (c *Cluster) validate() (errs *apis.FieldError) { - if c == nil { - return errs.Also(apis.ErrMissingField()) - } +func (c *Cluster) parseEndpoint() (*url.URL, error) { + return url.Parse(c.Endpoint) +} + +// validateEndpoint performs cloud-provider-agnostic validations +// (only). +func (c *Cluster) validateEndpoint() (errs *apis.FieldError) { if len(c.Endpoint) == 0 { errs = errs.Also(apis.ErrMissingField("endpoint")) } else { - endpoint, err := url.Parse(c.Endpoint) + endpoint, err := c.parseEndpoint() // url.Parse() will accept a lot of input without error; make // sure it's a real URL if err != nil || !endpoint.IsAbs() || endpoint.Hostname() == "" { @@ -103,6 +106,23 @@ func (c *Cluster) validate() (errs *apis.FieldError) { return errs } +// HasTLSEndpoint returns whether or not the endpoint requires TLS +// (and, most likely, depending on cloud provider, a CABundle). +// Conservatively it assumes TLS unless the endpoint has been +// explicitly configured with a non-TLS scheme, like 'http'. +func (c *Cluster) HasTLSEndpoint() bool { + endpoint, err := c.parseEndpoint() + return err != nil || endpoint.Scheme != "http" +} + +// validate performs cloud-provider-agnostic validations (only). +func (c *Cluster) validate() (errs *apis.FieldError) { + if c == nil { + return errs.Also(apis.ErrMissingField()) + } + return errs.Also(c.validateEndpoint()) +} + // Validate constraints subresource. This validation logic is used both upon // creation of a provisioner as well as when a pod is attempting to be // provisioned. If a provisioner fails validation, it will be rejected by the diff --git a/pkg/cloudprovider/aws/cloudprovider.go b/pkg/cloudprovider/aws/cloudprovider.go index a110b3589033..804f28a1dc8e 100644 --- a/pkg/cloudprovider/aws/cloudprovider.go +++ b/pkg/cloudprovider/aws/cloudprovider.go @@ -178,7 +178,7 @@ func (c *CloudProvider) ValidateSpec(ctx context.Context, spec *v1alpha3.Provisi if ptr.StringValue(spec.Cluster.Name) == "" { errs = errs.Also(apis.ErrMissingField("name")).ViaField("cluster") } - if ptr.StringValue(spec.Cluster.CABundle) == "" { + if spec.Cluster.HasTLSEndpoint() && ptr.StringValue(spec.Cluster.CABundle) == "" { errs = errs.Also(apis.ErrMissingField("caBundle")).ViaField("cluster") } return errs diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index 033fee0e3376..0fcdae99fb87 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -562,6 +562,14 @@ var _ = Describe("Allocation", func() { It("should default in missing fields", func() { Expect(provisioner.Validate(ctx)).To(Succeed()) }) + It("should succeed if missing caBundle not required", func() { + cluster := v1alpha3.Cluster{ + Endpoint: "http://insecure-endpoint", + Name: ptr.String("insecure-cluster"), + } + provisioner.Spec.Cluster = cluster // undo any defaulting + Expect(provisioner.Validate(ctx)).To(Succeed()) + }) It("should fail if aws required fields are empty", func() { for _, cluster := range []v1alpha3.Cluster{ {CABundle: ptr.String("dGVzdC1jbHVzdGVyCg==")}, From dacdbf5cefb54adb98600be40b0213bee7898bf2 Mon Sep 17 00:00:00 2001 From: jacob Date: Mon, 30 Aug 2021 13:46:18 -0700 Subject: [PATCH 22/34] address etarn pr fback --- pkg/cloudprovider/aws/suite_test.go | 3 ++- pkg/{cloudprovider/aws => test}/fake/filesystem.go | 0 2 files changed, 2 insertions(+), 1 deletion(-) rename pkg/{cloudprovider/aws => test}/fake/filesystem.go (100%) diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index 0fcdae99fb87..867f878d7714 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -30,6 +30,7 @@ import ( "github.com/awslabs/karpenter/pkg/controllers/allocation/scheduling" "github.com/awslabs/karpenter/pkg/test" . "github.com/awslabs/karpenter/pkg/test/expectations" + testfake "github.com/awslabs/karpenter/pkg/test/fake" "github.com/awslabs/karpenter/pkg/utils/filesystem" "github.com/awslabs/karpenter/pkg/utils/parallel" "github.com/awslabs/karpenter/pkg/utils/resources" @@ -53,7 +54,7 @@ var fakeEC2API *fake.EC2API var controller reconcile.Reconciler func TestAPIs(t *testing.T) { - ctx = filesystem.Inject(TestContextWithLogger(t), fake.Filesystem()) + ctx = filesystem.Inject(TestContextWithLogger(t), testfake.Filesystem()) RegisterFailHandler(Fail) RunSpecs(t, "CloudProvider/AWS") } diff --git a/pkg/cloudprovider/aws/fake/filesystem.go b/pkg/test/fake/filesystem.go similarity index 100% rename from pkg/cloudprovider/aws/fake/filesystem.go rename to pkg/test/fake/filesystem.go From 2e4500cb091cf3d1d6e2d06e440e3ba0d02451ad Mon Sep 17 00:00:00 2001 From: jacob Date: Mon, 30 Aug 2021 15:56:12 -0700 Subject: [PATCH 23/34] update docs --- website/content/en/docs/provisioner-crd.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/website/content/en/docs/provisioner-crd.md b/website/content/en/docs/provisioner-crd.md index 06c3775c207d..4b3b81874740 100644 --- a/website/content/en/docs/provisioner-crd.md +++ b/website/content/en/docs/provisioner-crd.md @@ -33,10 +33,10 @@ spec: # Provisioned nodes will have these labels labels: ##### AWS Specific ##### - # Constrain node launch template, default="bottlerocket" - node.k8s.aws/launch-template-id: "bottlerocket-qwertyuiop" - # Constrain node launch template, default="$LATEST" - node.k8s.aws/launch-template-version: "my-special-version" + # Constrain node launch template ('$Default' version always used). + # If not specified, Karpenter will generate a Bottlerocket- + # based launch template dynamically. + node.k8s.aws/launch-template-name: "my-launch-template-name" # Constrain node capacity type, default="on-demand" node.k8s.aws/capacity-type: "spot" ``` From 541a2dfb9a38f401809f1a4cd7f41a58beb5515d Mon Sep 17 00:00:00 2001 From: jacob Date: Mon, 30 Aug 2021 17:22:40 -0700 Subject: [PATCH 24/34] remove no longer valid test --- pkg/cloudprovider/aws/suite_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index 867f878d7714..7877f84b2eac 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -576,7 +576,6 @@ var _ = Describe("Allocation", func() { {CABundle: ptr.String("dGVzdC1jbHVzdGVyCg==")}, {CABundle: ptr.String("dGVzdC1jbHVzdGVyCg=="), Endpoint: "https://test-cluster"}, {CABundle: ptr.String("dGVzdC1jbHVzdGVyCg=="), Name: ptr.String("test-cluster")}, - {Endpoint: "https://test-cluster", Name: ptr.String("test-cluster")}, {Name: ptr.String("test-cluster")}, } { provisioner.Spec.Cluster = cluster // undo any defaulting From b610d1d336cc74306d30eb671e0737c59be51948 Mon Sep 17 00:00:00 2001 From: jacob Date: Mon, 30 Aug 2021 17:23:17 -0700 Subject: [PATCH 25/34] remove stray line --- pkg/cloudprovider/aws/suite_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index 7877f84b2eac..8bca9e3eeea4 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -60,7 +60,6 @@ func TestAPIs(t *testing.T) { } var _ = BeforeSuite(func() { - launchTemplateCache = cache.New(CacheTTL, CacheCleanupInterval) fakeEC2API = &fake.EC2API{} instanceTypeProvider := NewInstanceTypeProvider(fakeEC2API) From b6825c856fa2af3ea549ea3ca3c409b2ebc508fb Mon Sep 17 00:00:00 2001 From: jacob Date: Mon, 30 Aug 2021 17:26:46 -0700 Subject: [PATCH 26/34] pr fback --- pkg/cloudprovider/aws/cloudprovider.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/pkg/cloudprovider/aws/cloudprovider.go b/pkg/cloudprovider/aws/cloudprovider.go index 804f28a1dc8e..52817ff948c6 100644 --- a/pkg/cloudprovider/aws/cloudprovider.go +++ b/pkg/cloudprovider/aws/cloudprovider.go @@ -178,8 +178,5 @@ func (c *CloudProvider) ValidateSpec(ctx context.Context, spec *v1alpha3.Provisi if ptr.StringValue(spec.Cluster.Name) == "" { errs = errs.Also(apis.ErrMissingField("name")).ViaField("cluster") } - if spec.Cluster.HasTLSEndpoint() && ptr.StringValue(spec.Cluster.CABundle) == "" { - errs = errs.Also(apis.ErrMissingField("caBundle")).ViaField("cluster") - } return errs } From 36a393ddc118e06653f5e83576795774a1f1eafe Mon Sep 17 00:00:00 2001 From: jacob Date: Mon, 30 Aug 2021 17:37:43 -0700 Subject: [PATCH 27/34] revert changes --- pkg/cloudprovider/aws/suite_test.go | 41 ++++++++++------------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index 8bca9e3eeea4..9c5f15065fd7 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -20,8 +20,6 @@ import ( "time" "github.com/Pallinder/go-randomdata" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/ec2" "github.com/awslabs/karpenter/pkg/apis/provisioning/v1alpha3" "github.com/awslabs/karpenter/pkg/cloudprovider/aws/fake" "github.com/awslabs/karpenter/pkg/cloudprovider/registry" @@ -30,21 +28,22 @@ import ( "github.com/awslabs/karpenter/pkg/controllers/allocation/scheduling" "github.com/awslabs/karpenter/pkg/test" . "github.com/awslabs/karpenter/pkg/test/expectations" - testfake "github.com/awslabs/karpenter/pkg/test/fake" - "github.com/awslabs/karpenter/pkg/utils/filesystem" "github.com/awslabs/karpenter/pkg/utils/parallel" "github.com/awslabs/karpenter/pkg/utils/resources" + "github.com/patrickmn/go-cache" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/reconcile" + + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/service/ec2" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" - "github.com/patrickmn/go-cache" v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" . "knative.dev/pkg/logging/testing" "knative.dev/pkg/ptr" - "sigs.k8s.io/controller-runtime/pkg/client" - "sigs.k8s.io/controller-runtime/pkg/reconcile" ) var ctx context.Context @@ -54,7 +53,7 @@ var fakeEC2API *fake.EC2API var controller reconcile.Reconciler func TestAPIs(t *testing.T) { - ctx = filesystem.Inject(TestContextWithLogger(t), testfake.Filesystem()) + ctx = TestContextWithLogger(t) RegisterFailHandler(Fail) RunSpecs(t, "CloudProvider/AWS") } @@ -100,8 +99,7 @@ var _ = Describe("Allocation", func() { var provisioner *v1alpha3.Provisioner BeforeEach(func() { - var err error - provisioner, err = (&v1alpha3.Provisioner{ + provisioner = &v1alpha3.Provisioner{ ObjectMeta: metav1.ObjectMeta{ Name: v1alpha3.DefaultProvisioner.Name, }, @@ -109,10 +107,10 @@ var _ = Describe("Allocation", func() { Cluster: v1alpha3.Cluster{ Name: ptr.String("test-cluster"), Endpoint: "https://test-cluster", + CABundle: ptr.String("dGVzdC1jbHVzdGVyCg=="), }, }, - }).WithDynamicDefaults(ctx) - Expect(err).To(BeNil()) + } fakeEC2API.Reset() ExpectCleanedUp(env.Client) launchTemplateCache.Flush() @@ -559,25 +557,14 @@ var _ = Describe("Allocation", func() { }) Context("Validation", func() { Context("Cluster", func() { - It("should default in missing fields", func() { - Expect(provisioner.Validate(ctx)).To(Succeed()) - }) - It("should succeed if missing caBundle not required", func() { - cluster := v1alpha3.Cluster{ - Endpoint: "http://insecure-endpoint", - Name: ptr.String("insecure-cluster"), - } - provisioner.Spec.Cluster = cluster // undo any defaulting - Expect(provisioner.Validate(ctx)).To(Succeed()) - }) - It("should fail if aws required fields are empty", func() { + It("should fail if fields are empty", func() { for _, cluster := range []v1alpha3.Cluster{ + {Endpoint: "https://test-cluster", CABundle: ptr.String("dGVzdC1jbHVzdGVyCg==")}, + {Name: ptr.String("test-cluster"), CABundle: ptr.String("dGVzdC1jbHVzdGVyCg==")}, {CABundle: ptr.String("dGVzdC1jbHVzdGVyCg==")}, - {CABundle: ptr.String("dGVzdC1jbHVzdGVyCg=="), Endpoint: "https://test-cluster"}, - {CABundle: ptr.String("dGVzdC1jbHVzdGVyCg=="), Name: ptr.String("test-cluster")}, {Name: ptr.String("test-cluster")}, } { - provisioner.Spec.Cluster = cluster // undo any defaulting + provisioner.Spec.Cluster = cluster Expect(provisioner.Validate(ctx)).ToNot(Succeed()) } }) From 2fc72243b4405ca04c27823a60ae1532ee4c207b Mon Sep 17 00:00:00 2001 From: jacob Date: Tue, 31 Aug 2021 11:21:18 -0700 Subject: [PATCH 28/34] undo my changes hrere --- .../v1alpha3/provisioner_validation.go | 30 ++++--------------- 1 file changed, 5 insertions(+), 25 deletions(-) diff --git a/pkg/apis/provisioning/v1alpha3/provisioner_validation.go b/pkg/apis/provisioning/v1alpha3/provisioner_validation.go index 5f8078152600..4b9deb6146ef 100644 --- a/pkg/apis/provisioning/v1alpha3/provisioner_validation.go +++ b/pkg/apis/provisioning/v1alpha3/provisioner_validation.go @@ -86,17 +86,14 @@ func (s *ProvisionerSpec) validateRestrictedLabels() (errs *apis.FieldError) { return errs } -func (c *Cluster) parseEndpoint() (*url.URL, error) { - return url.Parse(c.Endpoint) -} - -// validateEndpoint performs cloud-provider-agnostic validations -// (only). -func (c *Cluster) validateEndpoint() (errs *apis.FieldError) { +func (c *Cluster) validate() (errs *apis.FieldError) { + if c == nil { + return errs.Also(apis.ErrMissingField()) + } if len(c.Endpoint) == 0 { errs = errs.Also(apis.ErrMissingField("endpoint")) } else { - endpoint, err := c.parseEndpoint() + endpoint, err := url.Parse(c.Endpoint) // url.Parse() will accept a lot of input without error; make // sure it's a real URL if err != nil || !endpoint.IsAbs() || endpoint.Hostname() == "" { @@ -106,23 +103,6 @@ func (c *Cluster) validateEndpoint() (errs *apis.FieldError) { return errs } -// HasTLSEndpoint returns whether or not the endpoint requires TLS -// (and, most likely, depending on cloud provider, a CABundle). -// Conservatively it assumes TLS unless the endpoint has been -// explicitly configured with a non-TLS scheme, like 'http'. -func (c *Cluster) HasTLSEndpoint() bool { - endpoint, err := c.parseEndpoint() - return err != nil || endpoint.Scheme != "http" -} - -// validate performs cloud-provider-agnostic validations (only). -func (c *Cluster) validate() (errs *apis.FieldError) { - if c == nil { - return errs.Also(apis.ErrMissingField()) - } - return errs.Also(c.validateEndpoint()) -} - // Validate constraints subresource. This validation logic is used both upon // creation of a provisioner as well as when a pod is attempting to be // provisioned. If a provisioner fails validation, it will be rejected by the From 2f7cc91531e27a887b9a0cc446d29ed8d0f5aaab Mon Sep 17 00:00:00 2001 From: jacob Date: Tue, 31 Aug 2021 11:50:39 -0700 Subject: [PATCH 29/34] start to migrate clusterCA default code to cloudprovider logic --- .../v1alpha3/provisioner_defaults.go | 55 +++++-------------- pkg/controllers/allocation/controller.go | 10 +--- .../allocation/scheduling/scheduler.go | 1 - 3 files changed, 16 insertions(+), 50 deletions(-) diff --git a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go index 1652c5512fe7..a332e2f43849 100644 --- a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go +++ b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go @@ -17,14 +17,15 @@ package v1alpha3 import ( "context" "encoding/base64" - "errors" - "io/fs" "github.com/awslabs/karpenter/pkg/utils/filesystem" "github.com/spf13/afero" ) const ( + // InClusterCABundlePath is normally available to Pods such as + // Karpenter, as described here: + // https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/#accessing-the-api-from-a-pod InClusterCABundlePath = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" ) @@ -32,51 +33,25 @@ const ( func (p *Provisioner) SetDefaults(ctx context.Context) {} // SetDefaults for the provisioner, cascading to all subspecs -func (s *ProvisionerSpec) SetDefaults(ctx context.Context) {} +//func (s *ProvisionerSpec) SetDefaults(ctx context.Context) {} -// WithDefaults returns a copy of this Provisioner with some empty/missing -// properties replaced by (potentially dynamic) cloud provider agnostic default values. -// The returned copy might be complemented by dynamic default values which -// must not be hoisted (saved) into the original Provisioner CRD as those -// default values might change over time (e.g. rolling upgrade of CABundle, ...). -func (p *Provisioner) WithDynamicDefaults(ctx context.Context) (_ *Provisioner, err error) { - provisioner := *p.DeepCopy() - provisioner.Spec, err = provisioner.Spec.withDynamicDefaults(ctx) - return &provisioner, err -} - -// WithDefaults returns a copy of this ProvisionerSpec with some empty -// properties replaced by default values. -func (s *ProvisionerSpec) withDynamicDefaults(ctx context.Context) (_ ProvisionerSpec, err error) { - spec := *s.DeepCopy() - spec.Cluster, err = spec.Cluster.withDynamicDefaults(ctx) - return spec, err -} - -// WithDefaults returns a copy of this Cluster with some empty -// properties replaced by default values. Notably, it will try -// to load the CABundle from the in-cluster configuraiton if it -// is not explicitly set. -func (c *Cluster) withDynamicDefaults(ctx context.Context) (_ Cluster, err error) { - cluster := *c.DeepCopy() - cluster.CABundle, err = cluster.getCABundle(ctx) - return cluster, err -} - -func (c *Cluster) getCABundle(ctx context.Context) (*string, error) { +func (c *Cluster) GetCABundle(ctx context.Context) (*string, error) { if c.CABundle != nil { - // If CABundle is explicitly provided use that one. An empty string is - // a valid value here if the intention is to disable the in-cluster CABundle - // and using the HTTP client's default trust-store (CABundle) instead. + // If CABundle is explicitly provided, use that one. An empty + // string is a valid value here if the intention is to disable + // the in-cluster CABundle, and using the HTTP client's + // default trust-store (CABundle) instead. return c.CABundle, nil } - // Otherwise, fallback to the in-cluster configuration. + // Otherwise, fall back to the in-cluster configuration. + fs := filesystem.For(ctx) + exists, err := afero.Exists(fs, InClusterCABundlePath) + if err != nil || !exists { + return nil, err + } binary, err := afero.ReadFile(filesystem.For(ctx), InClusterCABundlePath) if err != nil { - if errors.Is(err, fs.ErrNotExist) { - return nil, nil - } return nil, err } encoded := base64.StdEncoding.EncodeToString(binary) diff --git a/pkg/controllers/allocation/controller.go b/pkg/controllers/allocation/controller.go index 20e9189f6153..669b38ea1878 100644 --- a/pkg/controllers/allocation/controller.go +++ b/pkg/controllers/allocation/controller.go @@ -172,15 +172,7 @@ func (c *Controller) provisionerFor(ctx context.Context, name types.NamespacedNa if err := c.KubeClient.Get(ctx, name, provisioner); err != nil { return nil, err } - - // Hydrate provisioner with (dynamic) default values, which must not - // be persisted into the original CRD as they might change with each reconciliation - // loop iteration. - defaulted, err := provisioner.WithDynamicDefaults(ctx) - if err != nil { - return defaulted, fmt.Errorf("setting dynamic default values, %w", err) - } - return defaulted, nil + return provisioner, nil } // podToProvisioner is a function handler to transform pod objs to provisioner reconcile requests diff --git a/pkg/controllers/allocation/scheduling/scheduler.go b/pkg/controllers/allocation/scheduling/scheduler.go index 12759701b718..58780969973b 100644 --- a/pkg/controllers/allocation/scheduling/scheduler.go +++ b/pkg/controllers/allocation/scheduling/scheduler.go @@ -134,7 +134,6 @@ func (s *Scheduler) getDaemons(ctx context.Context, node *v1.Node) ([]*v1.Pod, e return pods, nil } - // IsSchedulable returns true if the pod can schedule to the node func IsSchedulable(pod *v1.Pod, node *v1.Node) bool { // Tolerate Taints From c16ae015ed9bd4d89a467e919014c72ce586dd7a Mon Sep 17 00:00:00 2001 From: jacob Date: Tue, 31 Aug 2021 20:29:51 -0700 Subject: [PATCH 30/34] move CABundle dynamic loading to launch template generation time --- .../v1alpha3/provisioner_defaults.go | 3 -- pkg/cloudprovider/aws/launchtemplate.go | 52 +++++++++++-------- pkg/cloudprovider/aws/suite_test.go | 6 +-- 3 files changed, 33 insertions(+), 28 deletions(-) diff --git a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go index a332e2f43849..2e21c43a2e3d 100644 --- a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go +++ b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go @@ -32,9 +32,6 @@ const ( // SetDefaults for the provisioner func (p *Provisioner) SetDefaults(ctx context.Context) {} -// SetDefaults for the provisioner, cascading to all subspecs -//func (s *ProvisionerSpec) SetDefaults(ctx context.Context) {} - func (c *Cluster) GetCABundle(ctx context.Context) (*string, error) { if c.CABundle != nil { // If CABundle is explicitly provided, use that one. An empty diff --git a/pkg/cloudprovider/aws/launchtemplate.go b/pkg/cloudprovider/aws/launchtemplate.go index fc25f5cc9f0f..012fa84d4a69 100644 --- a/pkg/cloudprovider/aws/launchtemplate.go +++ b/pkg/cloudprovider/aws/launchtemplate.go @@ -19,7 +19,6 @@ import ( "context" "encoding/base64" "fmt" - "text/template" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/awserr" @@ -35,18 +34,6 @@ import ( const ( launchTemplateNameFormat = "Karpenter-%s-%s" - bottlerocketUserData = ` -[settings.kubernetes] -api-server = "{{.Cluster.Endpoint}}" -{{if .Cluster.CABundle}}{{if len .Cluster.CABundle}}cluster-certificate = "{{.Cluster.CABundle}}"{{end}}{{end}} -cluster-name = "{{if .Cluster.Name}}{{.Cluster.Name}}{{end}}" -{{if .Constraints.Labels }}[settings.kubernetes.node-labels]{{ end }} -{{ range $Key, $Value := .Constraints.Labels }}"{{ $Key }}" = "{{ $Value }}" -{{ end }} -{{if .Constraints.Taints }}[settings.kubernetes.node-taints]{{ end }} -{{ range $Taint := .Constraints.Taints }}"{{ $Taint.Key }}" = "{{ $Taint.Value}}:{{ $Taint.Effect }}" -{{ end }} -` ) type LaunchTemplateProvider struct { @@ -103,10 +90,17 @@ func (p *LaunchTemplateProvider) Get(ctx context.Context, provisioner *v1alpha3. return nil, err } + // 3. Get userData for Node + userData, err := p.getUserData(ctx, provisioner, constraints) + if err != nil { + return nil, err + } + // 4. Ensure the launch template exists, or create it + launchTemplate, err := p.ensureLaunchTemplate(ctx, &launchTemplateOptions{ Cluster: provisioner.Spec.Cluster, - UserData: p.getUserData(provisioner, constraints), + UserData: userData, AMIID: amiID, SecurityGroups: securityGroups, }) @@ -197,14 +191,28 @@ func (p *LaunchTemplateProvider) getSecurityGroupIds(ctx context.Context, provis return securityGroupIds, nil } -func (p *LaunchTemplateProvider) getUserData(provisioner *v1alpha3.Provisioner, constraints *Constraints) string { - t := template.Must(template.New("userData").Parse(bottlerocketUserData)) +func (p *LaunchTemplateProvider) getUserData(ctx context.Context, provisioner *v1alpha3.Provisioner, constraints *Constraints) (string, error) { var userData bytes.Buffer - if err := t.Execute(&userData, struct { - Constraints *Constraints - Cluster v1alpha3.Cluster - }{constraints, provisioner.Spec.Cluster}); err != nil { - panic(fmt.Sprintf("Parsing user data from %v, %v, %s", provisioner, constraints, err.Error())) + userData.WriteString(fmt.Sprintf("[settings.kubernetes]\napi-server = \"%s\"\n", provisioner.Spec.Cluster.Endpoint)) + userData.WriteString(fmt.Sprintf("cluster-name = \"%s\"\n", *provisioner.Spec.Cluster.Name)) + caBundle, err := provisioner.Spec.Cluster.GetCABundle(ctx) + if err != nil { + return "", fmt.Errorf("getting user data, %w", err) + } + if caBundle != nil { + userData.WriteString(fmt.Sprintf("cluster-certificate = \"%s\"\n", *caBundle)) + } + if len(constraints.Labels) > 0 { + userData.WriteString("[settings.kubernetes.node-labels]\n") + for k, v := range constraints.Labels { + userData.WriteString(fmt.Sprintf("\"%s\" = \"%v\"\n", k, v)) + } + } + if len(constraints.Taints) > 0 { + userData.WriteString("[settings.kubernetes.node-taints]\n") + for _, taint := range constraints.Taints { + userData.WriteString(fmt.Sprintf("\"%s\" = \"%s:%s\"\n", taint.Key, taint.Value, taint.Effect)) + } } - return base64.StdEncoding.EncodeToString(userData.Bytes()) + return base64.StdEncoding.EncodeToString(userData.Bytes()), nil } diff --git a/pkg/cloudprovider/aws/suite_test.go b/pkg/cloudprovider/aws/suite_test.go index 9c5f15065fd7..f805eef0c5c5 100644 --- a/pkg/cloudprovider/aws/suite_test.go +++ b/pkg/cloudprovider/aws/suite_test.go @@ -335,7 +335,7 @@ var _ = Describe("Allocation", func() { launchTemplate := input.LaunchTemplateConfigs[0].LaunchTemplateSpecification Expect(*launchTemplate.LaunchTemplateName).To(Equal(pods[0].Spec.NodeSelector[LaunchTemplateNameLabel])) }) - It("should allow a pod to override the launch template id and use the default launch template version", func() { + It("should allow a pod to override the launch template name and use the default launch template version", func() { // Setup provisioner.Spec.Labels = map[string]string{LaunchTemplateNameLabel: randomdata.SillyName()} ExpectCreated(env.Client, provisioner) @@ -352,7 +352,7 @@ var _ = Describe("Allocation", func() { Expect(*launchTemplate.LaunchTemplateName).To(Equal(pods[0].Spec.NodeSelector[LaunchTemplateNameLabel])) Expect(*launchTemplate.Version).To(Equal(DefaultLaunchTemplateVersion)) }) - It("should allow a pod to override the launch template id and use the provisioner's launch template version", func() { + It("should allow a pod to override the launch template name and use the provisioner's launch template version", func() { // Setup provisioner.Spec.Labels = map[string]string{ LaunchTemplateNameLabel: randomdata.SillyName(), @@ -372,7 +372,7 @@ var _ = Describe("Allocation", func() { }) }) Context("Subnets", func() { - It("should default to the clusters subnets", func() { + It("should default to the cluster's subnets", func() { // Setup provisioner.Spec.InstanceTypes = []string{"m5.large"} // limit instance type to simplify ConsistOf checks ExpectCreated(env.Client, provisioner) From 4b9f61295d2fcf0a42f4087296d430fde5b19305 Mon Sep 17 00:00:00 2001 From: jacob Date: Tue, 31 Aug 2021 21:40:32 -0700 Subject: [PATCH 31/34] switch to using client-go to get CABundle --- go.mod | 1 - go.sum | 8 +--- .../v1alpha3/provisioner_defaults.go | 20 +++------ pkg/test/fake/filesystem.go | 20 --------- pkg/utils/filesystem/filesystem.go | 43 ------------------- 5 files changed, 6 insertions(+), 86 deletions(-) delete mode 100644 pkg/test/fake/filesystem.go delete mode 100644 pkg/utils/filesystem/filesystem.go diff --git a/go.mod b/go.mod index 003866783ede..94ba62fb93c9 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,6 @@ require ( github.com/onsi/ginkgo v1.16.4 github.com/onsi/gomega v1.13.0 github.com/patrickmn/go-cache v2.1.0+incompatible - github.com/spf13/afero v1.6.0 go.uber.org/multierr v1.7.0 golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6 k8s.io/api v0.20.7 diff --git a/go.sum b/go.sum index 7d30d26dc2a4..11349d81d76b 100644 --- a/go.sum +++ b/go.sum @@ -539,8 +539,6 @@ github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+o github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3 h1:CE8S1cTafDpPvMhIxNJKvHsGVBgn1xWYf1NbHQhywc8= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/fs v0.1.0 h1:Jskdu9ieNAYnjxsi0LbQp1ulIKZV1LAFgK1tWhpZgl8= -github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515 h1:T+h1c/A9Gawja4Y9mFVWj2vyii2bbUNDw3kt9VxK2EY= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= @@ -692,8 +690,6 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/profile v1.2.1 h1:F++O52m40owAmADcojzM+9gyjmMOY/T4oYJkgFDH8RE= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pkg/sftp v1.10.1 h1:VasscCm72135zRysgrJDKsntdmPN+OuU3+nnHYA9wyc= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= 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/posener/complete v1.1.1 h1:ccV59UEOTzVDnDUEFdT95ZzHVZ+5+158q8+SJb2QV5w= @@ -773,9 +769,8 @@ github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJ github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= 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.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc= github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk= -github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= @@ -879,7 +874,6 @@ golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190829043050-9756ffdc2472/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= diff --git a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go index 2e21c43a2e3d..f33a521e4bd7 100644 --- a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go +++ b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go @@ -18,15 +18,7 @@ import ( "context" "encoding/base64" - "github.com/awslabs/karpenter/pkg/utils/filesystem" - "github.com/spf13/afero" -) - -const ( - // InClusterCABundlePath is normally available to Pods such as - // Karpenter, as described here: - // https://kubernetes.io/docs/tasks/access-application-cluster/access-cluster/#accessing-the-api-from-a-pod - InClusterCABundlePath = "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" + "k8s.io/client-go/rest" ) // SetDefaults for the provisioner @@ -41,16 +33,14 @@ func (c *Cluster) GetCABundle(ctx context.Context) (*string, error) { return c.CABundle, nil } - // Otherwise, fall back to the in-cluster configuration. - fs := filesystem.For(ctx) - exists, err := afero.Exists(fs, InClusterCABundlePath) - if err != nil || !exists { + config, err := rest.InClusterConfig() + if err != nil { return nil, err } - binary, err := afero.ReadFile(filesystem.For(ctx), InClusterCABundlePath) + err = rest.LoadTLSFiles(config) if err != nil { return nil, err } - encoded := base64.StdEncoding.EncodeToString(binary) + encoded := base64.StdEncoding.EncodeToString(config.CAData) return &encoded, nil } diff --git a/pkg/test/fake/filesystem.go b/pkg/test/fake/filesystem.go deleted file mode 100644 index d8703106efb5..000000000000 --- a/pkg/test/fake/filesystem.go +++ /dev/null @@ -1,20 +0,0 @@ -package fake - -import ( - "fmt" - "path/filepath" - - "github.com/awslabs/karpenter/pkg/apis/provisioning/v1alpha3" - "github.com/spf13/afero" -) - -func Filesystem() afero.Fs { - fakeFS := afero.NewMemMapFs() - if err := fakeFS.MkdirAll(filepath.Dir(v1alpha3.InClusterCABundlePath), 0755); err != nil { - panic(fmt.Sprintf("unable to make directory for %s: %v", v1alpha3.InClusterCABundlePath, err)) - } - if err := afero.WriteFile(fakeFS, v1alpha3.InClusterCABundlePath, []byte("fake CA Bundle data"), 0644); err != nil { - panic(fmt.Sprintf("unable to write file %s: %v", v1alpha3.InClusterCABundlePath, err)) - } - return fakeFS -} diff --git a/pkg/utils/filesystem/filesystem.go b/pkg/utils/filesystem/filesystem.go deleted file mode 100644 index 2d612aa15535..000000000000 --- a/pkg/utils/filesystem/filesystem.go +++ /dev/null @@ -1,43 +0,0 @@ -/* -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package filesystem - -import ( - "context" - - "github.com/spf13/afero" -) - -type contextKey string - -const ( - fsKey contextKey = "karpenter.sh/fs" -) - -// Inject adds an fs.ReadFileFS that should be used by tests (only) -// to mock out the filesystem. -func Inject(ctx context.Context, override afero.Fs) context.Context { - return context.WithValue(ctx, fsKey, override) -} - -// For returns an fs.ReadFileFS, normally a pass-through to the host -// filesystem, except in the context of a test. -func For(ctx context.Context) afero.Fs { - retval := ctx.Value(fsKey) - if retval == nil { - // Use afero because io/fs does not allow absolute paths like - // `/var/something`. - return afero.NewOsFs() - } - return retval.(afero.Fs) -} From 1acd986d894570a0c9e3c2223c0a158f839314a9 Mon Sep 17 00:00:00 2001 From: jacob Date: Tue, 31 Aug 2021 21:44:35 -0700 Subject: [PATCH 32/34] revert --- cmd/webhook/main.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/cmd/webhook/main.go b/cmd/webhook/main.go index f7f0a73af27a..1283cf00fb15 100644 --- a/cmd/webhook/main.go +++ b/cmd/webhook/main.go @@ -97,6 +97,4 @@ func newConfigValidationController(ctx context.Context, cmw configmap.Watcher) * ) } -func InjectContext(ctx context.Context) context.Context { - return ctx -} +func InjectContext(ctx context.Context) context.Context { return ctx } From 9e7ef29822b23e53b374958ab62c8369441d5946 Mon Sep 17 00:00:00 2001 From: jacob Date: Tue, 31 Aug 2021 21:50:20 -0700 Subject: [PATCH 33/34] remove stray line --- pkg/cloudprovider/aws/launchtemplate.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/cloudprovider/aws/launchtemplate.go b/pkg/cloudprovider/aws/launchtemplate.go index 012fa84d4a69..067ff0d2839d 100644 --- a/pkg/cloudprovider/aws/launchtemplate.go +++ b/pkg/cloudprovider/aws/launchtemplate.go @@ -97,7 +97,6 @@ func (p *LaunchTemplateProvider) Get(ctx context.Context, provisioner *v1alpha3. } // 4. Ensure the launch template exists, or create it - launchTemplate, err := p.ensureLaunchTemplate(ctx, &launchTemplateOptions{ Cluster: provisioner.Spec.Cluster, UserData: userData, From 85a721dedfd624f8728d95474bbf1c1fdf3a9235 Mon Sep 17 00:00:00 2001 From: jacob Date: Wed, 1 Sep 2021 19:58:01 -0700 Subject: [PATCH 34/34] use GetConfigOrDie() from controllerruntime ... ... instead of rest.InClusterConfig() - this will work in more scenarios, such as when Karpenter is not running inside of the cluster --- .../provisioning/v1alpha3/provisioner_defaults.go | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go index f33a521e4bd7..30ef8ae6dc18 100644 --- a/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go +++ b/pkg/apis/provisioning/v1alpha3/provisioner_defaults.go @@ -18,7 +18,7 @@ import ( "context" "encoding/base64" - "k8s.io/client-go/rest" + controllerruntime "sigs.k8s.io/controller-runtime" ) // SetDefaults for the provisioner @@ -33,14 +33,7 @@ func (c *Cluster) GetCABundle(ctx context.Context) (*string, error) { return c.CABundle, nil } - config, err := rest.InClusterConfig() - if err != nil { - return nil, err - } - err = rest.LoadTLSFiles(config) - if err != nil { - return nil, err - } + config := controllerruntime.GetConfigOrDie() encoded := base64.StdEncoding.EncodeToString(config.CAData) return &encoded, nil }