From 7e6c16fe70a00fb68300d9d584f0f78b94cc02c3 Mon Sep 17 00:00:00 2001 From: Jonathan Innis Date: Mon, 27 Nov 2023 11:10:46 -0800 Subject: [PATCH] Drop alpha settings from code and tests --- charts/karpenter/templates/deployment.yaml | 1 - charts/karpenter/templates/role.yaml | 2 + go.mod | 2 + go.sum | 4 +- hack/docs/instancetypes_gen_docs.go | 3 - pkg/apis/apis.go | 3 - pkg/apis/settings/settings.go | 139 --------- pkg/apis/settings/settings_validation.go | 80 ----- pkg/apis/settings/suite_test.go | 211 ------------- pkg/apis/settings/zz_generated.deepcopy.go | 43 --- pkg/cloudprovider/suite_test.go | 3 - .../interruption_benchmark_test.go | 2 - pkg/controllers/interruption/suite_test.go | 3 - .../nodeclaim/garbagecollection/suite_test.go | 2 - .../nodeclaim/tagging/suite_test.go | 2 - pkg/controllers/nodeclass/suite_test.go | 2 - pkg/operator/operator.go | 2 - pkg/operator/options/options.go | 25 -- pkg/operator/options/options_validation.go | 2 +- pkg/operator/options/suite_test.go | 239 ++++----------- pkg/providers/amifamily/al2.go | 15 +- pkg/providers/amifamily/ami_test.go | 2 - pkg/providers/amifamily/bottlerocket.go | 15 +- pkg/providers/amifamily/resolver.go | 9 +- pkg/providers/amifamily/ubuntu.go | 15 +- pkg/providers/instance/suite_test.go | 3 - pkg/providers/instancetype/suite_test.go | 37 +-- pkg/providers/instancetype/types.go | 3 +- .../launchtemplate/launchtemplate.go | 18 +- pkg/providers/launchtemplate/suite_test.go | 124 +------- pkg/providers/pricing/suite_test.go | 3 - pkg/providers/securitygroup/suite_test.go | 3 - pkg/providers/subnet/suite_test.go | 3 - pkg/test/environment.go | 2 - pkg/test/settings.go | 58 ---- test/pkg/environment/aws/environment.go | 2 - test/pkg/environment/aws/setup.go | 3 - test/pkg/environment/common/environment.go | 3 - test/pkg/environment/common/expectations.go | 24 -- test/pkg/environment/common/setup.go | 3 - test/suites/integration/cni_test.go | 14 +- .../nodeclaim/garbage_collection_test.go | 4 - tools/allocatable-diff/go.mod | 101 ++++--- tools/allocatable-diff/go.sum | 285 +++++++++--------- tools/allocatable-diff/main.go | 4 +- 45 files changed, 333 insertions(+), 1190 deletions(-) delete mode 100644 pkg/apis/settings/settings.go delete mode 100644 pkg/apis/settings/settings_validation.go delete mode 100644 pkg/apis/settings/suite_test.go delete mode 100644 pkg/apis/settings/zz_generated.deepcopy.go delete mode 100644 pkg/test/settings.go diff --git a/charts/karpenter/templates/deployment.yaml b/charts/karpenter/templates/deployment.yaml index 3befdb152a29..9f7fcf958d3b 100644 --- a/charts/karpenter/templates/deployment.yaml +++ b/charts/karpenter/templates/deployment.yaml @@ -30,7 +30,6 @@ spec: {{- with .Values.podAnnotations }} {{- toYaml . | nindent 8 }} {{- end }} - checksum/settings: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} spec: {{- with .Values.imagePullSecrets }} imagePullSecrets: diff --git a/charts/karpenter/templates/role.yaml b/charts/karpenter/templates/role.yaml index 6cd101990fbf..29731e3138e5 100644 --- a/charts/karpenter/templates/role.yaml +++ b/charts/karpenter/templates/role.yaml @@ -18,10 +18,12 @@ rules: resources: ["configmaps", "namespaces", "secrets"] verbs: ["get", "list", "watch"] # Write +{{- if .Values.webhook.enabled }} - apiGroups: [""] resources: ["secrets"] verbs: ["update"] resourceNames: ["{{ include "karpenter.fullname" . }}-cert"] +{{- end }} - apiGroups: [""] resources: ["configmaps"] verbs: ["update", "patch", "delete"] diff --git a/go.mod b/go.mod index 03efc7f8b135..98f7949365b7 100644 --- a/go.mod +++ b/go.mod @@ -31,6 +31,8 @@ require ( sigs.k8s.io/karpenter v0.32.2-0.20231128022149-cd7c3057c6ad ) +replace sigs.k8s.io/karpenter => github.com/jonathan-innis/karpenter-core v0.0.0-20231128041504-222b6be04111 + require ( contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d // indirect contrib.go.opencensus.io/exporter/prometheus v0.4.2 // indirect diff --git a/go.sum b/go.sum index 2576652c1dc4..fe1b0cf3de2f 100644 --- a/go.sum +++ b/go.sum @@ -221,6 +221,8 @@ github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9Y 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/jonathan-innis/karpenter-core v0.0.0-20231128041504-222b6be04111 h1:4IF8HQHgmN1YYaHRmy5bBdNRXLPDb9jt+nyFout6VSc= +github.com/jonathan-innis/karpenter-core v0.0.0-20231128041504-222b6be04111/go.mod h1:6FTggQw2OXqtUm2h2lTMlw/ej3TMvCmauOSYPQz/nWo= 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/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= @@ -761,8 +763,6 @@ sigs.k8s.io/controller-runtime v0.16.3 h1:2TuvuokmfXvDUamSx1SuAOO3eTyye+47mJCigw sigs.k8s.io/controller-runtime v0.16.3/go.mod h1:j7bialYoSn142nv9sCOJmQgDXQXxnroFU4VnX/brVJ0= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/karpenter v0.32.2-0.20231128022149-cd7c3057c6ad h1:HBfGLlcoZ3Z+NxVAtIDOo6HSrmLyjHYNsQz16/LkAko= -sigs.k8s.io/karpenter v0.32.2-0.20231128022149-cd7c3057c6ad/go.mod h1:6FTggQw2OXqtUm2h2lTMlw/ej3TMvCmauOSYPQz/nWo= sigs.k8s.io/structured-merge-diff/v4 v4.3.0 h1:UZbZAZfX0wV2zr7YZorDz6GXROfDFj6LvqCRm4VUVKk= sigs.k8s.io/structured-merge-diff/v4 v4.3.0/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= diff --git a/hack/docs/instancetypes_gen_docs.go b/hack/docs/instancetypes_gen_docs.go index b946ecd4116b..736e01c72110 100644 --- a/hack/docs/instancetypes_gen_docs.go +++ b/hack/docs/instancetypes_gen_docs.go @@ -35,7 +35,6 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client/fake" "sigs.k8s.io/controller-runtime/pkg/manager" - "github.com/aws/karpenter/pkg/apis/settings" awscloudprovider "github.com/aws/karpenter/pkg/cloudprovider" "github.com/aws/karpenter/pkg/operator" "github.com/aws/karpenter/pkg/operator/options" @@ -93,8 +92,6 @@ func main() { ClusterEndpoint: lo.ToPtr("https://docs-gen.aws"), IsolatedVPC: lo.ToPtr(true), // disable pricing lookup })) - // TODO @joinnis: Remove this when dropping alpha support - ctx = settings.ToContext(ctx, test.Settings()) ctx, op := operator.NewOperator(ctx, &coreoperator.Operator{ Manager: &FakeManager{}, diff --git a/pkg/apis/apis.go b/pkg/apis/apis.go index cc70654c2b07..09e7fe43abf1 100644 --- a/pkg/apis/apis.go +++ b/pkg/apis/apis.go @@ -21,13 +21,11 @@ import ( v1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1" "k8s.io/apimachinery/pkg/runtime" - "github.com/aws/karpenter/pkg/apis/settings" "github.com/aws/karpenter/pkg/apis/v1beta1" "github.com/samber/lo" "sigs.k8s.io/karpenter/pkg/apis" - coresettings "sigs.k8s.io/karpenter/pkg/apis/settings" "sigs.k8s.io/karpenter/pkg/utils/functional" ) @@ -38,7 +36,6 @@ var ( ) // AddToScheme may be used to add all resources defined in the project to a Scheme AddToScheme = Builder.AddToScheme - Settings = []coresettings.Injectable{&settings.Settings{}} ) //go:generate controller-gen crd object:headerFile="../../hack/boilerplate.go.txt" paths="./..." output:crd:artifacts:config=crds diff --git a/pkg/apis/settings/settings.go b/pkg/apis/settings/settings.go deleted file mode 100644 index c5e23f0556d8..000000000000 --- a/pkg/apis/settings/settings.go +++ /dev/null @@ -1,139 +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 settings - -import ( - "context" - "encoding/json" - "fmt" - "time" - - v1 "k8s.io/api/core/v1" - "knative.dev/pkg/configmap" - - coresettings "sigs.k8s.io/karpenter/pkg/apis/settings" -) - -type settingsKeyType struct{} - -var ContextKey = settingsKeyType{} - -var defaultSettings = &Settings{ - AssumeRoleARN: "", - AssumeRoleDuration: time.Minute * 15, - ClusterCABundle: "", - ClusterName: "", - ClusterEndpoint: "", - DefaultInstanceProfile: "", - EnablePodENI: false, - EnableENILimitedPodDensity: true, - IsolatedVPC: false, - VMMemoryOverheadPercent: 0.075, - InterruptionQueueName: "", - Tags: map[string]string{}, - ReservedENIs: 0, -} - -// +k8s:deepcopy-gen=true -type Settings struct { - AssumeRoleARN string - AssumeRoleDuration time.Duration - ClusterCABundle string - ClusterName string - ClusterEndpoint string - DefaultInstanceProfile string - EnablePodENI bool - EnableENILimitedPodDensity bool - IsolatedVPC bool - VMMemoryOverheadPercent float64 - InterruptionQueueName string - Tags map[string]string - ReservedENIs int -} - -func (*Settings) ConfigMap() string { - return "karpenter-global-settings" -} - -// Inject creates a Settings from the supplied ConfigMap -func (*Settings) Inject(ctx context.Context, cm *v1.ConfigMap) (context.Context, error) { - s := defaultSettings.DeepCopy() - if cm == nil { - return ToContext(ctx, s), nil - } - - if err := configmap.Parse(cm.Data, - configmap.AsString("aws.assumeRoleARN", &s.AssumeRoleARN), - configmap.AsDuration("aws.assumeRoleDuration", &s.AssumeRoleDuration), - configmap.AsString("aws.clusterCABundle", &s.ClusterCABundle), - configmap.AsString("aws.clusterName", &s.ClusterName), - configmap.AsString("aws.clusterEndpoint", &s.ClusterEndpoint), - configmap.AsString("aws.defaultInstanceProfile", &s.DefaultInstanceProfile), - configmap.AsBool("aws.enablePodENI", &s.EnablePodENI), - configmap.AsBool("aws.enableENILimitedPodDensity", &s.EnableENILimitedPodDensity), - configmap.AsBool("aws.isolatedVPC", &s.IsolatedVPC), - configmap.AsFloat64("aws.vmMemoryOverheadPercent", &s.VMMemoryOverheadPercent), - configmap.AsString("aws.interruptionQueueName", &s.InterruptionQueueName), - AsStringMap("aws.tags", &s.Tags), - configmap.AsInt("aws.reservedENIs", &s.ReservedENIs), - ); err != nil { - return ctx, fmt.Errorf("parsing settings, %w", err) - } - if err := s.Validate(); err != nil { - return ctx, fmt.Errorf("validating settings, %w", err) - } - return ToContext(ctx, s), nil -} - -func (*Settings) FromContext(ctx context.Context) coresettings.Injectable { - return FromContext(ctx) -} - -func ToContext(ctx context.Context, s *Settings) context.Context { - return context.WithValue(ctx, ContextKey, s) -} - -func FromContext(ctx context.Context) *Settings { - data := ctx.Value(ContextKey) - if data == nil { - // This is developer error if this happens, so we should panic - panic("settings doesn't exist in context") - } - return data.(*Settings) -} - -// AsTypedString passes the value at key through into the target, if it exists. -func AsTypedString[T ~string](key string, target *T) configmap.ParseFunc { - return func(data map[string]string) error { - if raw, ok := data[key]; ok { - *target = T(raw) - } - return nil - } -} - -// AsStringMap parses a value as a JSON map of map[string]string. -func AsStringMap(key string, target *map[string]string) configmap.ParseFunc { - return func(data map[string]string) error { - if raw, ok := data[key]; ok && raw != "" { - m := map[string]string{} - if err := json.Unmarshal([]byte(raw), &m); err != nil { - return err - } - *target = m - } - return nil - } -} diff --git a/pkg/apis/settings/settings_validation.go b/pkg/apis/settings/settings_validation.go deleted file mode 100644 index 467040bb84ff..000000000000 --- a/pkg/apis/settings/settings_validation.go +++ /dev/null @@ -1,80 +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 settings - -import ( - "fmt" - "net/url" - "time" - - "knative.dev/pkg/apis" - - "github.com/aws/karpenter/pkg/apis/v1alpha1" -) - -func (s Settings) Validate() (errs *apis.FieldError) { - return errs.Also( - s.validateEndpoint(), - s.validateTags(), - s.validateVMMemoryOverheadPercent(), - s.validateReservedENIs(), - s.validateAssumeRoleDuration(), - ).ViaField("aws") -} - -func (s Settings) validateAssumeRoleDuration() (errs *apis.FieldError) { - if s.AssumeRoleDuration < time.Minute*15 { - return errs.Also(apis.ErrInvalidValue("assumeRoleDuration cannot be less than 15 Minutes", "assumeRoleDuration")) - } - return nil -} - -func (s Settings) validateEndpoint() (errs *apis.FieldError) { - if s.ClusterEndpoint == "" { - return nil - } - endpoint, err := url.Parse(s.ClusterEndpoint) - // url.Parse() will accept a lot of input without error; make - // sure it's a real URL - if err != nil || !endpoint.IsAbs() || endpoint.Hostname() == "" { - return errs.Also(apis.ErrInvalidValue(fmt.Sprintf("%q not a valid clusterEndpoint URL", s.ClusterEndpoint), "clusterEndpoint")) - } - return nil -} - -func (s Settings) validateTags() (errs *apis.FieldError) { - for k := range s.Tags { - for _, pattern := range v1alpha1.RestrictedTagPatterns { - if pattern.MatchString(k) { - errs = errs.Also(errs, apis.ErrInvalidKeyName(k, "tags", fmt.Sprintf("tag contains a restricted tag matching the pattern %q", pattern.String()))) - } - } - } - return errs -} - -func (s Settings) validateVMMemoryOverheadPercent() (errs *apis.FieldError) { - if s.VMMemoryOverheadPercent < 0 { - return errs.Also(apis.ErrInvalidValue("cannot be negative", "vmMemoryOverheadPercent")) - } - return nil -} - -func (s Settings) validateReservedENIs() (errs *apis.FieldError) { - if s.ReservedENIs < 0 { - return errs.Also(apis.ErrInvalidValue("cannot be negative", "reservedENIs")) - } - return nil -} diff --git a/pkg/apis/settings/suite_test.go b/pkg/apis/settings/suite_test.go deleted file mode 100644 index af34c73a55c3..000000000000 --- a/pkg/apis/settings/suite_test.go +++ /dev/null @@ -1,211 +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 settings_test - -import ( - "context" - "testing" - "time" - - . "github.com/onsi/ginkgo/v2" - . "github.com/onsi/gomega" - v1 "k8s.io/api/core/v1" - . "knative.dev/pkg/logging/testing" - - "github.com/aws/karpenter/pkg/apis/settings" -) - -var ctx context.Context - -func TestAPIs(t *testing.T) { - ctx = TestContextWithLogger(t) - RegisterFailHandler(Fail) - RunSpecs(t, "Settings") -} - -var _ = Describe("Validation", func() { - It("should succeed to set defaults", func() { - cm := &v1.ConfigMap{ - Data: map[string]string{ - "aws.clusterEndpoint": "https://00000000000000000000000.gr7.us-west-2.eks.amazonaws.com", - "aws.clusterName": "my-cluster", - }, - } - ctx, err := (&settings.Settings{}).Inject(ctx, cm) - Expect(err).ToNot(HaveOccurred()) - s := settings.FromContext(ctx) - Expect(s.AssumeRoleARN).To(Equal("")) - Expect(s.AssumeRoleDuration).To(Equal(time.Duration(15) * time.Minute)) - Expect(s.ClusterCABundle).To(Equal("")) - Expect(s.DefaultInstanceProfile).To(Equal("")) - Expect(s.EnablePodENI).To(BeFalse()) - Expect(s.EnableENILimitedPodDensity).To(BeTrue()) - Expect(s.IsolatedVPC).To(BeFalse()) - Expect(s.VMMemoryOverheadPercent).To(Equal(0.075)) - Expect(len(s.Tags)).To(BeZero()) - Expect(s.ReservedENIs).To(Equal(0)) - }) - It("should succeed to set custom values", func() { - cm := &v1.ConfigMap{ - Data: map[string]string{ - "aws.assumeRoleARN": "arn:aws:iam::111222333444:role/testrole", - "aws.assumeRoleDuration": "27m", - "aws.clusterCABundle": "ca-bundle", - "aws.clusterEndpoint": "https://00000000000000000000000.gr7.us-west-2.eks.amazonaws.com", - "aws.clusterName": "my-cluster", - "aws.defaultInstanceProfile": "karpenter", - "aws.enablePodENI": "true", - "aws.enableENILimitedPodDensity": "false", - "aws.isolatedVPC": "true", - "aws.vmMemoryOverheadPercent": "0.1", - "aws.tags": `{"tag1": "value1", "tag2": "value2", "example.com/tag": "my-value"}`, - "aws.reservedENIs": "1", - }, - } - ctx, err := (&settings.Settings{}).Inject(ctx, cm) - Expect(err).ToNot(HaveOccurred()) - s := settings.FromContext(ctx) - Expect(s.AssumeRoleARN).To(Equal("arn:aws:iam::111222333444:role/testrole")) - Expect(s.AssumeRoleDuration).To(Equal(time.Duration(27) * time.Minute)) - Expect(s.ClusterCABundle).To(Equal("ca-bundle")) - Expect(s.DefaultInstanceProfile).To(Equal("karpenter")) - Expect(s.EnablePodENI).To(BeTrue()) - Expect(s.EnableENILimitedPodDensity).To(BeFalse()) - Expect(s.IsolatedVPC).To(BeTrue()) - Expect(s.VMMemoryOverheadPercent).To(Equal(0.1)) - Expect(len(s.Tags)).To(Equal(3)) - Expect(s.Tags).To(HaveKeyWithValue("tag1", "value1")) - Expect(s.Tags).To(HaveKeyWithValue("tag2", "value2")) - Expect(s.Tags).To(HaveKeyWithValue("example.com/tag", "my-value")) - Expect(s.ReservedENIs).To(Equal(1)) - }) - It("should succeed when setting values that no longer exist (backwards compatibility)", func() { - cm := &v1.ConfigMap{ - Data: map[string]string{ - "aws.clusterEndpoint": "https://00000000000000000000000.gr7.us-west-2.eks.amazonaws.com", - "aws.clusterName": "my-cluster", - "aws.defaultInstanceProfile": "karpenter", - "aws.enablePodENI": "true", - "aws.enableENILimitedPodDensity": "false", - "aws.isolatedVPC": "true", - "aws.vmMemoryOverheadPercent": "0.1", - "aws.tags": `{"tag1": "value1", "tag2": "value2", "example.com/tag": "my-value"}`, - "aws.reservedENIs": "1", - "aws.nodeNameConvention": "resource-name", - }, - } - ctx, err := (&settings.Settings{}).Inject(ctx, cm) - Expect(err).ToNot(HaveOccurred()) - s := settings.FromContext(ctx) - Expect(s.DefaultInstanceProfile).To(Equal("karpenter")) - Expect(s.EnablePodENI).To(BeTrue()) - Expect(s.EnableENILimitedPodDensity).To(BeFalse()) - Expect(s.IsolatedVPC).To(BeTrue()) - Expect(s.VMMemoryOverheadPercent).To(Equal(0.1)) - Expect(len(s.Tags)).To(Equal(3)) - Expect(s.Tags).To(HaveKeyWithValue("tag1", "value1")) - Expect(s.Tags).To(HaveKeyWithValue("tag2", "value2")) - Expect(s.Tags).To(HaveKeyWithValue("example.com/tag", "my-value")) - Expect(s.ReservedENIs).To(Equal(1)) - }) - It("should succeed validation when tags contain parts of restricted domains", func() { - cm := &v1.ConfigMap{ - Data: map[string]string{ - "aws.clusterEndpoint": "https://00000000000000000000000.gr7.us-west-2.eks.amazonaws.com", - "aws.clusterName": "my-cluster", - "aws.tags": `{"karpenter.sh/custom-key": "value1", "karpenter.sh/managed": "true", "kubernetes.io/role/key": "value2", "kubernetes.io/cluster/other-tag/hello": "value3"}`, - }, - } - ctx, err := (&settings.Settings{}).Inject(ctx, cm) - Expect(err).ToNot(HaveOccurred()) - s := settings.FromContext(ctx) - Expect(s.Tags).To(HaveKeyWithValue("karpenter.sh/custom-key", "value1")) - Expect(s.Tags).To(HaveKeyWithValue("karpenter.sh/managed", "true")) - Expect(s.Tags).To(HaveKeyWithValue("kubernetes.io/role/key", "value2")) - Expect(s.Tags).To(HaveKeyWithValue("kubernetes.io/cluster/other-tag/hello", "value3")) - }) - It("should fail validation when clusterEndpoint is invalid (not absolute)", func() { - cm := &v1.ConfigMap{ - Data: map[string]string{ - "aws.clusterName": "my-name", - "aws.clusterEndpoint": "00000000000000000000000.gr7.us-west-2.eks.amazonaws.com", - }, - } - _, err := (&settings.Settings{}).Inject(ctx, cm) - Expect(err).To(HaveOccurred()) - }) - It("should fail validation with panic when vmMemoryOverheadPercent is negative", func() { - cm := &v1.ConfigMap{ - Data: map[string]string{ - "aws.clusterEndpoint": "https://00000000000000000000000.gr7.us-west-2.eks.amazonaws.com", - "aws.clusterName": "my-cluster", - "aws.vmMemoryOverheadPercent": "-0.01", - }, - } - _, err := (&settings.Settings{}).Inject(ctx, cm) - Expect(err).To(HaveOccurred()) - }) - It("should fail validation when tags have keys that are in the restricted set of keys", func() { - cm := &v1.ConfigMap{ - Data: map[string]string{ - "aws.clusterEndpoint": "https://00000000000000000000000.gr7.us-west-2.eks.amazonaws.com", - "aws.clusterName": "my-cluster", - "aws.tags": `{"karpenter.sh/provisioner-name": "value1"}`, - }, - } - _, err := (&settings.Settings{}).Inject(ctx, cm) - Expect(err).To(HaveOccurred()) - - cm = &v1.ConfigMap{ - Data: map[string]string{ - "aws.clusterEndpoint": "https://00000000000000000000000.gr7.us-west-2.eks.amazonaws.com", - "aws.clusterName": "my-cluster", - "aws.tags": `{"value1", "karpenter.sh/managed-by": "value"}`, - }, - } - _, err = (&settings.Settings{}).Inject(ctx, cm) - Expect(err).To(HaveOccurred()) - - cm = &v1.ConfigMap{ - Data: map[string]string{ - "aws.clusterEndpoint": "https://00000000000000000000000.gr7.us-west-2.eks.amazonaws.com", - "aws.clusterName": "my-cluster", - "aws.tags": `{"kubernetes.io/cluster/my-cluster": "value2"}`, - }, - } - _, err = (&settings.Settings{}).Inject(ctx, cm) - Expect(err).To(HaveOccurred()) - }) - It("should fail validation with reservedENIs is negative", func() { - cm := &v1.ConfigMap{ - Data: map[string]string{ - "aws.reservedENIs": "-1", - "aws.clusterName": "my-cluster", - }, - } - _, err := (&settings.Settings{}).Inject(ctx, cm) - Expect(err).To(HaveOccurred()) - }) - It("should fail validation with assumeDurationRole is less then 15m", func() { - cm := &v1.ConfigMap{ - Data: map[string]string{ - "aws.assumeRoleDuration": "2m", - "aws.clusterName": "my-cluster", - }, - } - _, err := (&settings.Settings{}).Inject(ctx, cm) - Expect(err).To(HaveOccurred()) - }) -}) diff --git a/pkg/apis/settings/zz_generated.deepcopy.go b/pkg/apis/settings/zz_generated.deepcopy.go deleted file mode 100644 index 51a3bd930dd9..000000000000 --- a/pkg/apis/settings/zz_generated.deepcopy.go +++ /dev/null @@ -1,43 +0,0 @@ -//go:build !ignore_autogenerated - -/* -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. -*/ - -// Code generated by controller-gen. DO NOT EDIT. - -package settings - -import () - -// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *Settings) DeepCopyInto(out *Settings) { - *out = *in - if in.Tags != nil { - in, out := &in.Tags, &out.Tags - *out = make(map[string]string, len(*in)) - for key, val := range *in { - (*out)[key] = val - } - } -} - -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Settings. -func (in *Settings) DeepCopy() *Settings { - if in == nil { - return nil - } - out := new(Settings) - in.DeepCopyInto(out) - return out -} diff --git a/pkg/cloudprovider/suite_test.go b/pkg/cloudprovider/suite_test.go index b6459e64aad5..4a845bce9d83 100644 --- a/pkg/cloudprovider/suite_test.go +++ b/pkg/cloudprovider/suite_test.go @@ -38,7 +38,6 @@ import ( "github.com/aws/aws-sdk-go/service/ssm" "github.com/aws/karpenter/pkg/apis" - "github.com/aws/karpenter/pkg/apis/settings" "github.com/aws/karpenter/pkg/apis/v1beta1" "github.com/aws/karpenter/pkg/fake" "github.com/aws/karpenter/pkg/operator/options" @@ -77,7 +76,6 @@ var _ = BeforeSuite(func() { env = coretest.NewEnvironment(scheme.Scheme, coretest.WithCRDs(apis.CRDs...)) ctx = coreoptions.ToContext(ctx, coretest.Options()) ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) ctx, stop = context.WithCancel(ctx) awsEnv = test.NewEnvironment(ctx, env) fakeClock = clock.NewFakeClock(time.Now()) @@ -96,7 +94,6 @@ var _ = AfterSuite(func() { var _ = BeforeEach(func() { ctx = coreoptions.ToContext(ctx, coretest.Options()) ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) cluster.Reset() awsEnv.Reset() diff --git a/pkg/controllers/interruption/interruption_benchmark_test.go b/pkg/controllers/interruption/interruption_benchmark_test.go index d838a0b7773c..650eb628b88b 100644 --- a/pkg/controllers/interruption/interruption_benchmark_test.go +++ b/pkg/controllers/interruption/interruption_benchmark_test.go @@ -42,7 +42,6 @@ import ( controllerruntime "sigs.k8s.io/controller-runtime" "sigs.k8s.io/controller-runtime/pkg/client" - "github.com/aws/karpenter/pkg/apis/settings" awscache "github.com/aws/karpenter/pkg/cache" "github.com/aws/karpenter/pkg/controllers/interruption" "github.com/aws/karpenter/pkg/controllers/interruption/events" @@ -85,7 +84,6 @@ func benchmarkNotificationController(b *testing.B, messageCount int) { IsolatedVPC: lo.ToPtr(true), InterruptionQueue: lo.ToPtr("test-cluster"), })) - ctx = settings.ToContext(ctx, test.Settings()) env = coretest.NewEnvironment(scheme.Scheme) // Stop the coretest environment after the coretest completes defer func() { diff --git a/pkg/controllers/interruption/suite_test.go b/pkg/controllers/interruption/suite_test.go index d1efcdb7f9fd..dc748419d6ba 100644 --- a/pkg/controllers/interruption/suite_test.go +++ b/pkg/controllers/interruption/suite_test.go @@ -45,7 +45,6 @@ import ( . "sigs.k8s.io/karpenter/pkg/test/expectations" "github.com/aws/karpenter/pkg/apis" - "github.com/aws/karpenter/pkg/apis/settings" awscache "github.com/aws/karpenter/pkg/cache" "github.com/aws/karpenter/pkg/controllers/interruption" "github.com/aws/karpenter/pkg/controllers/interruption/messages" @@ -54,7 +53,6 @@ import ( "github.com/aws/karpenter/pkg/controllers/interruption/messages/statechange" "github.com/aws/karpenter/pkg/fake" "github.com/aws/karpenter/pkg/providers/sqs" - "github.com/aws/karpenter/pkg/test" "github.com/aws/karpenter/pkg/utils" ) @@ -93,7 +91,6 @@ var _ = AfterSuite(func() { var _ = BeforeEach(func() { ctx = coreoptions.ToContext(ctx, coretest.Options()) - ctx = settings.ToContext(ctx, test.Settings()) unavailableOfferingsCache.Flush() sqsapi.Reset() }) diff --git a/pkg/controllers/nodeclaim/garbagecollection/suite_test.go b/pkg/controllers/nodeclaim/garbagecollection/suite_test.go index da11775bb5d7..f30bca9d99d8 100644 --- a/pkg/controllers/nodeclaim/garbagecollection/suite_test.go +++ b/pkg/controllers/nodeclaim/garbagecollection/suite_test.go @@ -41,7 +41,6 @@ import ( . "sigs.k8s.io/karpenter/pkg/test/expectations" "github.com/aws/karpenter/pkg/apis" - "github.com/aws/karpenter/pkg/apis/settings" "github.com/aws/karpenter/pkg/apis/v1beta1" "github.com/aws/karpenter/pkg/cloudprovider" "github.com/aws/karpenter/pkg/controllers/nodeclaim/garbagecollection" @@ -64,7 +63,6 @@ func TestAPIs(t *testing.T) { var _ = BeforeSuite(func() { ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) env = coretest.NewEnvironment(scheme.Scheme, coretest.WithCRDs(apis.CRDs...)) awsEnv = test.NewEnvironment(ctx, env) cloudProvider = cloudprovider.New(awsEnv.InstanceTypesProvider, awsEnv.InstanceProvider, events.NewRecorder(&record.FakeRecorder{}), diff --git a/pkg/controllers/nodeclaim/tagging/suite_test.go b/pkg/controllers/nodeclaim/tagging/suite_test.go index 77d05c1551db..b347827c1e79 100644 --- a/pkg/controllers/nodeclaim/tagging/suite_test.go +++ b/pkg/controllers/nodeclaim/tagging/suite_test.go @@ -35,7 +35,6 @@ import ( coretest "sigs.k8s.io/karpenter/pkg/test" "github.com/aws/karpenter/pkg/apis" - "github.com/aws/karpenter/pkg/apis/settings" "github.com/aws/karpenter/pkg/apis/v1beta1" "github.com/aws/karpenter/pkg/controllers/nodeclaim/tagging" "github.com/aws/karpenter/pkg/fake" @@ -63,7 +62,6 @@ var _ = BeforeSuite(func() { env = coretest.NewEnvironment(scheme.Scheme, coretest.WithCRDs(apis.CRDs...)) ctx = coreoptions.ToContext(ctx, coretest.Options()) ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) awsEnv = test.NewEnvironment(ctx, env) taggingController = tagging.NewController(env.Client, awsEnv.InstanceProvider) }) diff --git a/pkg/controllers/nodeclass/suite_test.go b/pkg/controllers/nodeclass/suite_test.go index 1989e1296fd1..b4d0269c64ed 100644 --- a/pkg/controllers/nodeclass/suite_test.go +++ b/pkg/controllers/nodeclass/suite_test.go @@ -43,7 +43,6 @@ import ( . "sigs.k8s.io/karpenter/pkg/test/expectations" "github.com/aws/karpenter/pkg/apis" - "github.com/aws/karpenter/pkg/apis/settings" "github.com/aws/karpenter/pkg/apis/v1beta1" "github.com/aws/karpenter/pkg/controllers/nodeclass" "github.com/aws/karpenter/pkg/fake" @@ -67,7 +66,6 @@ var _ = BeforeSuite(func() { env = coretest.NewEnvironment(scheme.Scheme, coretest.WithCRDs(apis.CRDs...), coretest.WithFieldIndexers(test.EC2NodeClassFieldIndexer(ctx))) ctx = coreoptions.ToContext(ctx, coretest.Options()) ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) awsEnv = test.NewEnvironment(ctx, env) nodeClassController = nodeclass.NewNodeClassController(env.Client, events.NewRecorder(&record.FakeRecorder{}), awsEnv.SubnetProvider, awsEnv.SecurityGroupProvider, awsEnv.AMIProvider, awsEnv.InstanceProfileProvider) diff --git a/pkg/operator/operator.go b/pkg/operator/operator.go index c9fc57f4a2c0..cee1cf297ba9 100644 --- a/pkg/operator/operator.go +++ b/pkg/operator/operator.go @@ -48,7 +48,6 @@ import ( "knative.dev/pkg/logging" "knative.dev/pkg/ptr" - coreapis "sigs.k8s.io/karpenter/pkg/apis" "sigs.k8s.io/karpenter/pkg/apis/v1alpha5" corev1beta1 "sigs.k8s.io/karpenter/pkg/apis/v1beta1" "sigs.k8s.io/karpenter/pkg/operator" @@ -72,7 +71,6 @@ func init() { lo.Must0(apis.AddToScheme(scheme.Scheme)) v1alpha5.NormalizedLabels = lo.Assign(v1alpha5.NormalizedLabels, map[string]string{"topology.ebs.csi.aws.com/zone": corev1.LabelTopologyZone}) corev1beta1.NormalizedLabels = lo.Assign(corev1beta1.NormalizedLabels, map[string]string{"topology.ebs.csi.aws.com/zone": corev1.LabelTopologyZone}) - coreapis.Settings = append(coreapis.Settings, apis.Settings...) } // Operator is injected into the AWS CloudProvider's factories diff --git a/pkg/operator/options/options.go b/pkg/operator/options/options.go index c4a1008582c1..d9cc6c6c56be 100644 --- a/pkg/operator/options/options.go +++ b/pkg/operator/options/options.go @@ -27,8 +27,6 @@ import ( coreoptions "sigs.k8s.io/karpenter/pkg/operator/options" "sigs.k8s.io/karpenter/pkg/utils/env" - - "github.com/aws/karpenter/pkg/apis/settings" ) func init() { @@ -95,22 +93,6 @@ func (o *Options) ToContext(ctx context.Context) context.Context { return ToContext(ctx, o) } -func (o *Options) MergeSettings(ctx context.Context) { - s := settings.FromContext(ctx) - mergeField(&o.AssumeRoleARN, s.AssumeRoleARN, o.setFlags["assume-role-arn"]) - mergeField(&o.AssumeRoleDuration, s.AssumeRoleDuration, o.setFlags["assume-role-duration"]) - mergeField(&o.ClusterCABundle, s.ClusterCABundle, o.setFlags["cluster-ca-bundle"]) - mergeField(&o.ClusterName, s.ClusterName, o.setFlags["cluster-name"]) - mergeField(&o.ClusterEndpoint, s.ClusterEndpoint, o.setFlags["cluster-endpoint"]) - mergeField(&o.IsolatedVPC, s.IsolatedVPC, o.setFlags["isolated-vpc"]) - mergeField(&o.VMMemoryOverheadPercent, s.VMMemoryOverheadPercent, o.setFlags["vm-memory-overhead-percent"]) - mergeField(&o.InterruptionQueue, s.InterruptionQueueName, o.setFlags["interruption-queue"]) - mergeField(&o.ReservedENIs, s.ReservedENIs, o.setFlags["reserved-enis"]) - if err := o.validateRequiredFields(); err != nil { - panic(fmt.Errorf("checking required fields, %w", err)) - } -} - func ToContext(ctx context.Context, opts *Options) context.Context { return context.WithValue(ctx, optionsKey{}, opts) } @@ -122,10 +104,3 @@ func FromContext(ctx context.Context) *Options { } return retval.(*Options) } - -// Note: Separated out to help with cyclomatic complexity check -func mergeField[T any](dest *T, src T, isDestSet bool) { - if !isDestSet { - *dest = src - } -} diff --git a/pkg/operator/options/options_validation.go b/pkg/operator/options/options_validation.go index 984058d8b8e2..1c4a733700ec 100644 --- a/pkg/operator/options/options_validation.go +++ b/pkg/operator/options/options_validation.go @@ -28,6 +28,7 @@ func (o Options) Validate() error { o.validateVMMemoryOverheadPercent(), o.validateAssumeRoleDuration(), o.validateReservedENIs(), + o.validateRequiredFields(), ) } @@ -65,7 +66,6 @@ func (o Options) validateReservedENIs() error { return nil } -// Note: add back to Validate when karpenter-global-settings (and merge logic) are completely removed func (o Options) validateRequiredFields() error { if o.ClusterName == "" { return fmt.Errorf("missing field, cluster-name") diff --git a/pkg/operator/options/suite_test.go b/pkg/operator/options/suite_test.go index df0538b0a2eb..73d9b373fb20 100644 --- a/pkg/operator/options/suite_test.go +++ b/pkg/operator/options/suite_test.go @@ -17,7 +17,6 @@ package options_test import ( "context" "flag" - "fmt" "os" "testing" "time" @@ -29,7 +28,6 @@ import ( coreoptions "sigs.k8s.io/karpenter/pkg/operator/options" - "github.com/aws/karpenter/pkg/apis/settings" "github.com/aws/karpenter/pkg/operator/options" "github.com/aws/karpenter/pkg/test" ) @@ -43,210 +41,95 @@ func TestAPIs(t *testing.T) { } var _ = Describe("Options", func() { - var envState map[string]string - var environmentVariables = []string{ - "ASSUME_ROLE_ARN", - "ASSUME_ROLE_DURATION", - "CLUSTER_CA_BUNDLE", - "CLUSTER_NAME", - "CLUSTER_ENDPOINT", - "ISOLATED_VPC", - "VM_MEMORY_OVERHEAD_PERCENT", - "INTERRUPTION_QUEUE", - "RESERVED_ENIS", - } - var fs *coreoptions.FlagSet var opts *options.Options BeforeEach(func() { - envState = map[string]string{} - for _, ev := range environmentVariables { - val, ok := os.LookupEnv(ev) - if ok { - envState[ev] = val - } - os.Unsetenv(ev) - } fs = &coreoptions.FlagSet{ FlagSet: flag.NewFlagSet("karpenter", flag.ContinueOnError), } opts = &options.Options{} - opts.AddFlags(fs) - - // Inject default settings - var err error - ctx, err = (&settings.Settings{}).Inject(ctx, nil) - Expect(err).To(BeNil()) }) - AfterEach(func() { - for _, ev := range environmentVariables { - os.Unsetenv(ev) - } - for ev, val := range envState { - os.Setenv(ev, val) - } + os.Clearenv() }) - Context("Merging", func() { - It("shouldn't overwrite options when all are set", func() { - err := opts.Parse( - fs, - "--assume-role-arn", "options-cluster-role", - "--assume-role-duration", "20m", - "--cluster-ca-bundle", "options-bundle", - "--cluster-name", "options-cluster", - "--cluster-endpoint", "https://options-cluster", - "--isolated-vpc", - "--vm-memory-overhead-percent", "0.1", - "--interruption-queue", "options-cluster", - "--reserved-enis", "10", - ) - Expect(err).ToNot(HaveOccurred()) - ctx = settings.ToContext(ctx, &settings.Settings{ - AssumeRoleARN: "settings-cluster-role", - AssumeRoleDuration: time.Minute * 22, - ClusterCABundle: "settings-bundle", - ClusterName: "settings-cluster", - ClusterEndpoint: "https://settings-cluster", - IsolatedVPC: true, - VMMemoryOverheadPercent: 0.05, - InterruptionQueueName: "settings-cluster", - ReservedENIs: 8, - }) - opts.MergeSettings(ctx) - expectOptionsEqual(opts, test.Options(test.OptionsFields{ - AssumeRoleARN: lo.ToPtr("options-cluster-role"), - AssumeRoleDuration: lo.ToPtr(20 * time.Minute), - ClusterCABundle: lo.ToPtr("options-bundle"), - ClusterName: lo.ToPtr("options-cluster"), - ClusterEndpoint: lo.ToPtr("https://options-cluster"), - IsolatedVPC: lo.ToPtr(true), - VMMemoryOverheadPercent: lo.ToPtr[float64](0.1), - InterruptionQueue: lo.ToPtr("options-cluster"), - ReservedENIs: lo.ToPtr(10), - })) - - }) - It("should overwrite options when none are set", func() { - err := opts.Parse(fs) - Expect(err).ToNot(HaveOccurred()) - ctx = settings.ToContext(ctx, &settings.Settings{ - AssumeRoleARN: "settings-cluster-role", - AssumeRoleDuration: time.Minute * 22, - ClusterCABundle: "settings-bundle", - ClusterName: "settings-cluster", - ClusterEndpoint: "https://settings-cluster", - IsolatedVPC: true, - VMMemoryOverheadPercent: 0.05, - InterruptionQueueName: "settings-cluster", - ReservedENIs: 8, - }) - opts.MergeSettings(ctx) - expectOptionsEqual(opts, test.Options(test.OptionsFields{ - AssumeRoleARN: lo.ToPtr("settings-cluster-role"), - AssumeRoleDuration: lo.ToPtr(22 * time.Minute), - ClusterCABundle: lo.ToPtr("settings-bundle"), - ClusterName: lo.ToPtr("settings-cluster"), - ClusterEndpoint: lo.ToPtr("https://settings-cluster"), - IsolatedVPC: lo.ToPtr(true), - VMMemoryOverheadPercent: lo.ToPtr[float64](0.05), - InterruptionQueue: lo.ToPtr("settings-cluster"), - ReservedENIs: lo.ToPtr(8), - })) - - }) - It("should correctly merge options and settings when mixed", func() { - err := opts.Parse( - fs, - "--assume-role-arn", "options-cluster-role", - "--cluster-ca-bundle", "options-bundle", - "--cluster-name", "options-cluster", - "--cluster-endpoint", "https://options-cluster", - "--interruption-queue", "options-cluster", - ) - Expect(err).ToNot(HaveOccurred()) - ctx = settings.ToContext(ctx, &settings.Settings{ - AssumeRoleARN: "settings-cluster-role", - AssumeRoleDuration: time.Minute * 20, - ClusterCABundle: "settings-bundle", - ClusterName: "settings-cluster", - ClusterEndpoint: "https://settings-cluster", - IsolatedVPC: true, - VMMemoryOverheadPercent: 0.1, - InterruptionQueueName: "settings-cluster", - ReservedENIs: 10, - }) - opts.MergeSettings(ctx) - expectOptionsEqual(opts, test.Options(test.OptionsFields{ - AssumeRoleARN: lo.ToPtr("options-cluster-role"), - AssumeRoleDuration: lo.ToPtr(20 * time.Minute), - ClusterCABundle: lo.ToPtr("options-bundle"), - ClusterName: lo.ToPtr("options-cluster"), - ClusterEndpoint: lo.ToPtr("https://options-cluster"), - IsolatedVPC: lo.ToPtr(true), - VMMemoryOverheadPercent: lo.ToPtr[float64](0.1), - InterruptionQueue: lo.ToPtr("options-cluster"), - ReservedENIs: lo.ToPtr(10), - })) - }) - - It("should correctly fallback to env vars when CLI flags aren't set", func() { - os.Setenv("ASSUME_ROLE_ARN", "env-role") - os.Setenv("ASSUME_ROLE_DURATION", "20m") - os.Setenv("CLUSTER_CA_BUNDLE", "env-bundle") - os.Setenv("CLUSTER_NAME", "env-cluster") - os.Setenv("CLUSTER_ENDPOINT", "https://env-cluster") - os.Setenv("ISOLATED_VPC", "true") - os.Setenv("VM_MEMORY_OVERHEAD_PERCENT", "0.1") - os.Setenv("INTERRUPTION_QUEUE", "env-cluster") - os.Setenv("RESERVED_ENIS", "10") - fs = &coreoptions.FlagSet{ - FlagSet: flag.NewFlagSet("karpenter", flag.ContinueOnError), - } - opts.AddFlags(fs) - err := opts.Parse(fs) - Expect(err).ToNot(HaveOccurred()) - expectOptionsEqual(opts, test.Options(test.OptionsFields{ - AssumeRoleARN: lo.ToPtr("env-role"), - AssumeRoleDuration: lo.ToPtr(20 * time.Minute), - ClusterCABundle: lo.ToPtr("env-bundle"), - ClusterName: lo.ToPtr("env-cluster"), - ClusterEndpoint: lo.ToPtr("https://env-cluster"), - IsolatedVPC: lo.ToPtr(true), - VMMemoryOverheadPercent: lo.ToPtr[float64](0.1), - InterruptionQueue: lo.ToPtr("env-cluster"), - ReservedENIs: lo.ToPtr(10), - })) - }) + It("should correctly override default vars when CLI flags are set", func() { + opts.AddFlags(fs) + err := opts.Parse(fs, + "--assume-role-arn", "env-role", + "--assume-role-duration", "20m", + "--cluster-ca-bundle", "env-bundle", + "--cluster-name", "env-cluster", + "--cluster-endpoint", "https://env-cluster", + "--isolated-vpc", + "--vm-memory-overhead-percent", "0.1", + "--interruption-queue", "env-cluster", + "--reserved-enis", "10") + Expect(err).ToNot(HaveOccurred()) + expectOptionsEqual(opts, test.Options(test.OptionsFields{ + AssumeRoleARN: lo.ToPtr("env-role"), + AssumeRoleDuration: lo.ToPtr(20 * time.Minute), + ClusterCABundle: lo.ToPtr("env-bundle"), + ClusterName: lo.ToPtr("env-cluster"), + ClusterEndpoint: lo.ToPtr("https://env-cluster"), + IsolatedVPC: lo.ToPtr(true), + VMMemoryOverheadPercent: lo.ToPtr[float64](0.1), + InterruptionQueue: lo.ToPtr("env-cluster"), + ReservedENIs: lo.ToPtr(10), + })) + }) + It("should correctly fallback to env vars when CLI flags aren't set", func() { + os.Setenv("ASSUME_ROLE_ARN", "env-role") + os.Setenv("ASSUME_ROLE_DURATION", "20m") + os.Setenv("CLUSTER_CA_BUNDLE", "env-bundle") + os.Setenv("CLUSTER_NAME", "env-cluster") + os.Setenv("CLUSTER_ENDPOINT", "https://env-cluster") + os.Setenv("ISOLATED_VPC", "true") + os.Setenv("VM_MEMORY_OVERHEAD_PERCENT", "0.1") + os.Setenv("INTERRUPTION_QUEUE", "env-cluster") + os.Setenv("RESERVED_ENIS", "10") + + // Add flags after we set the environment variables so that the parsing logic correctly refers + // to the new environment variable values + opts.AddFlags(fs) + err := opts.Parse(fs) + Expect(err).ToNot(HaveOccurred()) + expectOptionsEqual(opts, test.Options(test.OptionsFields{ + AssumeRoleARN: lo.ToPtr("env-role"), + AssumeRoleDuration: lo.ToPtr(20 * time.Minute), + ClusterCABundle: lo.ToPtr("env-bundle"), + ClusterName: lo.ToPtr("env-cluster"), + ClusterEndpoint: lo.ToPtr("https://env-cluster"), + IsolatedVPC: lo.ToPtr(true), + VMMemoryOverheadPercent: lo.ToPtr[float64](0.1), + InterruptionQueue: lo.ToPtr("env-cluster"), + ReservedENIs: lo.ToPtr(10), + })) }) Context("Validation", func() { + BeforeEach(func() { + opts.AddFlags(fs) + }) It("should fail when cluster name is not set", func() { err := opts.Parse(fs) - // Overwrite ClusterName since it is commonly set by environment variables in dev environments - opts.ClusterName = "" - Expect(err).ToNot(HaveOccurred()) - Expect(func() { - opts.MergeSettings(ctx) - fmt.Printf("%#v", opts) - }).To(Panic()) + Expect(err).To(HaveOccurred()) }) It("should fail when assume role duration is less than 15 minutes", func() { - err := opts.Parse(fs, "--assume-role-duration", "1s") + err := opts.Parse(fs, "--cluster-name", "test-cluster", "--assume-role-duration", "1s") Expect(err).To(HaveOccurred()) }) It("should fail when clusterEndpoint is invalid (not absolute)", func() { - err := opts.Parse(fs, "--cluster-endpoint", "00000000000000000000000.gr7.us-west-2.eks.amazonaws.com") + err := opts.Parse(fs, "--cluster-name", "test-cluster", "--cluster-endpoint", "00000000000000000000000.gr7.us-west-2.eks.amazonaws.com") Expect(err).To(HaveOccurred()) }) It("should fail when vmMemoryOverheadPercent is negative", func() { - err := opts.Parse(fs, "--vm-memory-overhead-percent", "-0.01") + err := opts.Parse(fs, "--cluster-name", "test-cluster", "--vm-memory-overhead-percent", "-0.01") Expect(err).To(HaveOccurred()) }) It("should fail when reservedENIs is negative", func() { - err := opts.Parse(fs, "--reserved-enis", "-1") + err := opts.Parse(fs, "--cluster-name", "test-cluster", "--reserved-enis", "-1") Expect(err).To(HaveOccurred()) }) }) diff --git a/pkg/providers/amifamily/al2.go b/pkg/providers/amifamily/al2.go index e40cca0d8624..cdf5643c2c9e 100644 --- a/pkg/providers/amifamily/al2.go +++ b/pkg/providers/amifamily/al2.go @@ -80,14 +80,13 @@ func (a AL2) UserData(kubeletConfig *corev1beta1.KubeletConfiguration, taints [] return bootstrap.EKS{ ContainerRuntime: *containerRuntime, Options: bootstrap.Options{ - ClusterName: a.Options.ClusterName, - ClusterEndpoint: a.Options.ClusterEndpoint, - AWSENILimitedPodDensity: a.Options.AWSENILimitedPodDensity, - KubeletConfig: kubeletConfig, - Taints: taints, - Labels: labels, - CABundle: caBundle, - CustomUserData: customUserData, + ClusterName: a.Options.ClusterName, + ClusterEndpoint: a.Options.ClusterEndpoint, + KubeletConfig: kubeletConfig, + Taints: taints, + Labels: labels, + CABundle: caBundle, + CustomUserData: customUserData, }, } } diff --git a/pkg/providers/amifamily/ami_test.go b/pkg/providers/amifamily/ami_test.go index 47cca49b76ce..66c5cbe3fe2c 100644 --- a/pkg/providers/amifamily/ami_test.go +++ b/pkg/providers/amifamily/ami_test.go @@ -36,7 +36,6 @@ import ( coretest "sigs.k8s.io/karpenter/pkg/test" "github.com/aws/karpenter/pkg/apis" - "github.com/aws/karpenter/pkg/apis/settings" "github.com/aws/karpenter/pkg/apis/v1beta1" "github.com/aws/karpenter/pkg/operator/options" "github.com/aws/karpenter/pkg/providers/amifamily" @@ -65,7 +64,6 @@ var _ = BeforeSuite(func() { env = coretest.NewEnvironment(scheme.Scheme, coretest.WithCRDs(apis.CRDs...)) ctx = coreoptions.ToContext(ctx, coretest.Options()) ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) awsEnv = test.NewEnvironment(ctx, env) }) diff --git a/pkg/providers/amifamily/bottlerocket.go b/pkg/providers/amifamily/bottlerocket.go index aea8fcdf00fd..377e936de015 100644 --- a/pkg/providers/amifamily/bottlerocket.go +++ b/pkg/providers/amifamily/bottlerocket.go @@ -91,14 +91,13 @@ func (b Bottlerocket) DefaultAMIs(version string) []DefaultAMIOutput { func (b Bottlerocket) UserData(kubeletConfig *corev1beta1.KubeletConfiguration, taints []v1.Taint, labels map[string]string, caBundle *string, _ []*cloudprovider.InstanceType, customUserData *string) bootstrap.Bootstrapper { return bootstrap.Bottlerocket{ Options: bootstrap.Options{ - ClusterName: b.Options.ClusterName, - ClusterEndpoint: b.Options.ClusterEndpoint, - AWSENILimitedPodDensity: b.Options.AWSENILimitedPodDensity, - KubeletConfig: kubeletConfig, - Taints: taints, - Labels: labels, - CABundle: caBundle, - CustomUserData: customUserData, + ClusterName: b.Options.ClusterName, + ClusterEndpoint: b.Options.ClusterEndpoint, + KubeletConfig: kubeletConfig, + Taints: taints, + Labels: labels, + CABundle: caBundle, + CustomUserData: customUserData, }, } } diff --git a/pkg/providers/amifamily/resolver.go b/pkg/providers/amifamily/resolver.go index c1736ecceb24..ab5754dbdf5a 100644 --- a/pkg/providers/amifamily/resolver.go +++ b/pkg/providers/amifamily/resolver.go @@ -48,11 +48,10 @@ type Resolver struct { // Options define the static launch template parameters type Options struct { - ClusterName string - ClusterEndpoint string - AWSENILimitedPodDensity bool - InstanceProfile string - CABundle *string `hash:"ignore"` + ClusterName string + ClusterEndpoint string + InstanceProfile string + CABundle *string `hash:"ignore"` // Level-triggered fields that may change out of sync. SecurityGroups []v1beta1.SecurityGroup Tags map[string]string diff --git a/pkg/providers/amifamily/ubuntu.go b/pkg/providers/amifamily/ubuntu.go index 9c595bf8e483..62443028e6bb 100644 --- a/pkg/providers/amifamily/ubuntu.go +++ b/pkg/providers/amifamily/ubuntu.go @@ -56,14 +56,13 @@ func (u Ubuntu) DefaultAMIs(version string) []DefaultAMIOutput { func (u Ubuntu) UserData(kubeletConfig *corev1beta1.KubeletConfiguration, taints []v1.Taint, labels map[string]string, caBundle *string, _ []*cloudprovider.InstanceType, customUserData *string) bootstrap.Bootstrapper { return bootstrap.EKS{ Options: bootstrap.Options{ - ClusterName: u.Options.ClusterName, - ClusterEndpoint: u.Options.ClusterEndpoint, - AWSENILimitedPodDensity: u.Options.AWSENILimitedPodDensity, - KubeletConfig: kubeletConfig, - Taints: taints, - Labels: labels, - CABundle: caBundle, - CustomUserData: customUserData, + ClusterName: u.Options.ClusterName, + ClusterEndpoint: u.Options.ClusterEndpoint, + KubeletConfig: kubeletConfig, + Taints: taints, + Labels: labels, + CABundle: caBundle, + CustomUserData: customUserData, }, } } diff --git a/pkg/providers/instance/suite_test.go b/pkg/providers/instance/suite_test.go index 037719406e7d..f18e45f1e0f2 100644 --- a/pkg/providers/instance/suite_test.go +++ b/pkg/providers/instance/suite_test.go @@ -40,7 +40,6 @@ import ( . "sigs.k8s.io/karpenter/pkg/test/expectations" "github.com/aws/karpenter/pkg/apis" - "github.com/aws/karpenter/pkg/apis/settings" "github.com/aws/karpenter/pkg/apis/v1beta1" "github.com/aws/karpenter/pkg/cloudprovider" "github.com/aws/karpenter/pkg/fake" @@ -64,7 +63,6 @@ var _ = BeforeSuite(func() { env = coretest.NewEnvironment(scheme.Scheme, coretest.WithCRDs(apis.CRDs...)) ctx = coreoptions.ToContext(ctx, coretest.Options()) ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) awsEnv = test.NewEnvironment(ctx, env) cloudProvider = cloudprovider.New(awsEnv.InstanceTypesProvider, awsEnv.InstanceProvider, events.NewRecorder(&record.FakeRecorder{}), env.Client, awsEnv.AMIProvider, awsEnv.SecurityGroupProvider, awsEnv.SubnetProvider) @@ -77,7 +75,6 @@ var _ = AfterSuite(func() { var _ = BeforeEach(func() { ctx = coreoptions.ToContext(ctx, coretest.Options()) ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) awsEnv.Reset() }) diff --git a/pkg/providers/instancetype/suite_test.go b/pkg/providers/instancetype/suite_test.go index cab78b0b856e..12b199b111e3 100644 --- a/pkg/providers/instancetype/suite_test.go +++ b/pkg/providers/instancetype/suite_test.go @@ -51,7 +51,6 @@ import ( "sigs.k8s.io/karpenter/pkg/utils/resources" "github.com/aws/karpenter/pkg/apis" - "github.com/aws/karpenter/pkg/apis/settings" "github.com/aws/karpenter/pkg/apis/v1beta1" "github.com/aws/karpenter/pkg/cloudprovider" "github.com/aws/karpenter/pkg/fake" @@ -80,7 +79,6 @@ var _ = BeforeSuite(func() { env = coretest.NewEnvironment(scheme.Scheme, coretest.WithCRDs(apis.CRDs...)) ctx = coreoptions.ToContext(ctx, coretest.Options()) ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) awsEnv = test.NewEnvironment(ctx, env) fakeClock = &clock.FakeClock{} cloudProvider = cloudprovider.New(awsEnv.InstanceTypesProvider, awsEnv.InstanceProvider, events.NewRecorder(&record.FakeRecorder{}), @@ -96,7 +94,6 @@ var _ = AfterSuite(func() { var _ = BeforeEach(func() { ctx = coreoptions.ToContext(ctx, coretest.Options()) ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) cluster.Reset() awsEnv.Reset() awsEnv.LaunchTemplateProvider.KubeDNSIP = net.ParseIP("10.0.100.10") @@ -626,17 +623,6 @@ var _ = Describe("InstanceTypes", func() { } Expect(nodeNames.Len()).To(Equal(1)) }) - It("should set pods to 110 if not using ENI-based pod density", func() { - ctx = settings.ToContext(ctx, test.Settings(test.SettingOptions{ - EnableENILimitedPodDensity: lo.ToPtr(false), - })) - instanceInfo, err := awsEnv.InstanceTypesProvider.GetInstanceTypes(ctx) - Expect(err).To(BeNil()) - for _, info := range instanceInfo { - it := instancetype.NewInstanceType(ctx, info, nodePool.Spec.Template.Spec.Kubelet, fake.DefaultRegion, nodeClass, nil) - Expect(it.Capacity.Pods().Value()).To(BeNumerically("==", 110)) - } - }) It("should not set pods to 110 if using ENI-based pod density", func() { instanceInfo, err := awsEnv.InstanceTypesProvider.GetInstanceTypes(ctx) Expect(err).To(BeNil()) @@ -645,13 +631,10 @@ var _ = Describe("InstanceTypes", func() { Expect(it.Capacity.Pods().Value()).ToNot(BeNumerically("==", 110)) } }) - It("should set pods to 110 even ENILimitedPodDensity is enabled in awssettings but amifamily doesn't support", func() { + It("should set pods to 110 if AMI Family doesn't support", func() { instanceInfo, err := awsEnv.InstanceTypesProvider.GetInstanceTypes(ctx) Expect(err).To(BeNil()) - ctx = settings.ToContext(ctx, test.Settings(test.SettingOptions{ - EnableENILimitedPodDensity: lo.ToPtr(true), - })) for _, info := range instanceInfo { it := instancetype.NewInstanceType(ctx, info, nodePool.Spec.Template.Spec.Kubelet, fake.DefaultRegion, windowsNodeClass, nil) Expect(it.Capacity.Pods().Value()).To(BeNumerically("==", 110)) @@ -971,7 +954,7 @@ var _ = Describe("InstanceTypes", func() { Expect(it.Capacity.Pods().Value()).To(BeNumerically("==", 10)) } }) - It("should override max-pods value when AWSENILimitedPodDensity is unset", func() { + It("should override max-pods value", func() { instanceInfo, err := awsEnv.InstanceTypesProvider.GetInstanceTypes(ctx) Expect(err).To(BeNil()) nodePool.Spec.Template.Spec.Kubelet = &corev1beta1.KubeletConfiguration{ @@ -1059,19 +1042,21 @@ var _ = Describe("InstanceTypes", func() { Expect(it.Capacity.Pods().Value()).To(BeNumerically("==", limitedPods.Value())) } }) - It("should take 110 to be the default pods number when pods-per-core is 0 and AWSENILimitedPodDensity is unset", func() { - ctx = settings.ToContext(ctx, test.Settings(test.SettingOptions{ - EnableENILimitedPodDensity: lo.ToPtr(false), - })) - + It("should take limited pod density to be the default pods number when pods-per-core is 0", func() { instanceInfo, err := awsEnv.InstanceTypesProvider.GetInstanceTypes(ctx) Expect(err).To(BeNil()) nodePool.Spec.Template.Spec.Kubelet = &corev1beta1.KubeletConfiguration{ PodsPerCore: ptr.Int32(0), } for _, info := range instanceInfo { - it := instancetype.NewInstanceType(ctx, info, nodePool.Spec.Template.Spec.Kubelet, fake.DefaultRegion, nodeClass, nil) - Expect(it.Capacity.Pods().Value()).To(BeNumerically("==", 110)) + if *info.InstanceType == "t3.large" { + it := instancetype.NewInstanceType(ctx, info, nodePool.Spec.Template.Spec.Kubelet, fake.DefaultRegion, nodeClass, nil) + Expect(it.Capacity.Pods().Value()).To(BeNumerically("==", 35)) + } + if *info.InstanceType == "m6idn.32xlarge" { + it := instancetype.NewInstanceType(ctx, info, nodePool.Spec.Template.Spec.Kubelet, fake.DefaultRegion, nodeClass, nil) + Expect(it.Capacity.Pods().Value()).To(BeNumerically("==", 345)) + } } }) It("shouldn't report more resources than are actually available on instances", func() { diff --git a/pkg/providers/instancetype/types.go b/pkg/providers/instancetype/types.go index 566ba41aae4b..00458f30942c 100644 --- a/pkg/providers/instancetype/types.go +++ b/pkg/providers/instancetype/types.go @@ -31,7 +31,6 @@ import ( corev1beta1 "sigs.k8s.io/karpenter/pkg/apis/v1beta1" - "github.com/aws/karpenter/pkg/apis/settings" "github.com/aws/karpenter/pkg/apis/v1beta1" "github.com/aws/karpenter/pkg/operator/options" "github.com/aws/karpenter/pkg/providers/amifamily" @@ -399,7 +398,7 @@ func pods(ctx context.Context, info *ec2.InstanceTypeInfo, amiFamily amifamily.A switch { case kc != nil && kc.MaxPods != nil: count = int64(ptr.Int32Value(kc.MaxPods)) - case settings.FromContext(ctx).EnableENILimitedPodDensity && amiFamily.FeatureFlags().SupportsENILimitedPodDensity: + case amiFamily.FeatureFlags().SupportsENILimitedPodDensity: count = ENILimitedPods(ctx, info).Value() default: count = 110 diff --git a/pkg/providers/launchtemplate/launchtemplate.go b/pkg/providers/launchtemplate/launchtemplate.go index 69d794ab8dfc..0a3af6cff0d2 100644 --- a/pkg/providers/launchtemplate/launchtemplate.go +++ b/pkg/providers/launchtemplate/launchtemplate.go @@ -37,7 +37,6 @@ import ( corev1beta1 "sigs.k8s.io/karpenter/pkg/apis/v1beta1" - "github.com/aws/karpenter/pkg/apis/settings" "github.com/aws/karpenter/pkg/apis/v1beta1" awserrors "github.com/aws/karpenter/pkg/errors" "github.com/aws/karpenter/pkg/operator/options" @@ -162,7 +161,7 @@ func (p *Provider) createAMIOptions(ctx context.Context, nodeClass *v1beta1.EC2N delete(labels, k) } } - instanceProfile, err := p.getInstanceProfile(ctx, nodeClass) + instanceProfile, err := p.getInstanceProfile(nodeClass) if err != nil { return nil, err } @@ -175,10 +174,9 @@ func (p *Provider) createAMIOptions(ctx context.Context, nodeClass *v1beta1.EC2N return nil, fmt.Errorf("no security groups exist given constraints") } options := &amifamily.Options{ - ClusterName: options.FromContext(ctx).ClusterName, - ClusterEndpoint: p.ClusterEndpoint, - AWSENILimitedPodDensity: settings.FromContext(ctx).EnableENILimitedPodDensity, - InstanceProfile: instanceProfile, + ClusterName: options.FromContext(ctx).ClusterName, + ClusterEndpoint: p.ClusterEndpoint, + InstanceProfile: instanceProfile, SecurityGroups: lo.Map(securityGroups, func(s *ec2.SecurityGroup, _ int) v1beta1.SecurityGroup { return v1beta1.SecurityGroup{ID: aws.StringValue(s.GroupId), Name: aws.StringValue(s.GroupName)} }), @@ -371,7 +369,7 @@ func (p *Provider) cachedEvictedFunc(ctx context.Context) func(string, interface } } -func (p *Provider) getInstanceProfile(ctx context.Context, nodeClass *v1beta1.EC2NodeClass) (string, error) { +func (p *Provider) getInstanceProfile(nodeClass *v1beta1.EC2NodeClass) (string, error) { if nodeClass.Spec.InstanceProfile != nil { return aws.StringValue(nodeClass.Spec.InstanceProfile), nil } @@ -381,9 +379,5 @@ func (p *Provider) getInstanceProfile(ctx context.Context, nodeClass *v1beta1.EC } return nodeClass.Status.InstanceProfile, nil } - defaultProfile := settings.FromContext(ctx).DefaultInstanceProfile - if defaultProfile == "" { - return "", errors.New("neither spec.provider.instanceProfile nor --aws-default-instance-profile is specified") - } - return defaultProfile, nil + return "", errors.New("neither spec.instanceProfile or spec.role is specified") } diff --git a/pkg/providers/launchtemplate/suite_test.go b/pkg/providers/launchtemplate/suite_test.go index fc6cf3a17a5d..e933a86b270a 100644 --- a/pkg/providers/launchtemplate/suite_test.go +++ b/pkg/providers/launchtemplate/suite_test.go @@ -50,7 +50,6 @@ import ( . "sigs.k8s.io/karpenter/pkg/test/expectations" "github.com/aws/karpenter/pkg/apis" - "github.com/aws/karpenter/pkg/apis/settings" "github.com/aws/karpenter/pkg/apis/v1beta1" "github.com/aws/karpenter/pkg/cloudprovider" "github.com/aws/karpenter/pkg/fake" @@ -79,7 +78,6 @@ var _ = BeforeSuite(func() { env = coretest.NewEnvironment(scheme.Scheme, coretest.WithCRDs(apis.CRDs...)) ctx = coreoptions.ToContext(ctx, coretest.Options()) ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) ctx, stop = context.WithCancel(ctx) awsEnv = test.NewEnvironment(ctx, env) @@ -98,7 +96,6 @@ var _ = AfterSuite(func() { var _ = BeforeEach(func() { ctx = coreoptions.ToContext(ctx, coretest.Options()) ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) cluster.Reset() awsEnv.Reset() @@ -344,39 +341,6 @@ var _ = Describe("LaunchTemplates", func() { Expect(*createFleetInput.TagSpecifications[2].ResourceType).To(Equal(ec2.ResourceTypeFleet)) ExpectTags(createFleetInput.TagSpecifications[2].Tags, nodeClass.Spec.Tags) }) - It("should override global tags with provider tags", func() { - nodeClass.Spec.Tags = map[string]string{ - "tag1": "tag1value", - "tag2": "tag2value", - } - settingsTags := map[string]string{ - "tag1": "custom1", - "tag2": "custom2", - } - ctx = settings.ToContext(ctx, test.Settings(test.SettingOptions{ - Tags: settingsTags, - })) - ExpectApplied(ctx, env.Client, nodePool, nodeClass) - pod := coretest.UnschedulablePod() - ExpectProvisioned(ctx, env.Client, cluster, cloudProvider, prov, pod) - ExpectScheduled(ctx, env.Client, pod) - Expect(awsEnv.EC2API.CreateFleetBehavior.CalledWithInput.Len()).To(Equal(1)) - createFleetInput := awsEnv.EC2API.CreateFleetBehavior.CalledWithInput.Pop() - Expect(createFleetInput.TagSpecifications).To(HaveLen(3)) - - // tags should be included in instance, volume, and fleet tag specification - Expect(*createFleetInput.TagSpecifications[0].ResourceType).To(Equal(ec2.ResourceTypeInstance)) - ExpectTags(createFleetInput.TagSpecifications[0].Tags, nodeClass.Spec.Tags) - ExpectTagsNotFound(createFleetInput.TagSpecifications[0].Tags, settingsTags) - - Expect(*createFleetInput.TagSpecifications[1].ResourceType).To(Equal(ec2.ResourceTypeVolume)) - ExpectTags(createFleetInput.TagSpecifications[1].Tags, nodeClass.Spec.Tags) - ExpectTagsNotFound(createFleetInput.TagSpecifications[0].Tags, settingsTags) - - Expect(*createFleetInput.TagSpecifications[2].ResourceType).To(Equal(ec2.ResourceTypeFleet)) - ExpectTags(createFleetInput.TagSpecifications[2].Tags, nodeClass.Spec.Tags) - ExpectTagsNotFound(createFleetInput.TagSpecifications[0].Tags, settingsTags) - }) }) Context("Block Device Mappings", func() { It("should default AL2 block device mappings", func() { @@ -760,25 +724,7 @@ var _ = Describe("LaunchTemplates", func() { Expect(ok).To(BeTrue()) }) - It("should calculate memory overhead based on eni limited pods when ENI limited", func() { - ctx = settings.ToContext(ctx, test.Settings(test.SettingOptions{ - EnableENILimitedPodDensity: lo.ToPtr(false), - })) - - ctx = options.ToContext(ctx, test.Options(test.OptionsFields{ - VMMemoryOverheadPercent: lo.ToPtr[float64](0), - })) - - nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyAL2 - it := instancetype.NewInstanceType(ctx, info, nodePool.Spec.Template.Spec.Kubelet, "", nodeClass, nil) - overhead := it.Overhead.Total() - Expect(overhead.Memory().String()).To(Equal("993Mi")) - }) - It("should calculate memory overhead based on eni limited pods when not ENI limited", func() { - ctx = settings.ToContext(ctx, test.Settings(test.SettingOptions{ - EnableENILimitedPodDensity: lo.ToPtr(false), - })) - + It("should calculate memory overhead based on eni limited pods", func() { ctx = options.ToContext(ctx, test.Options(test.OptionsFields{ VMMemoryOverheadPercent: lo.ToPtr[float64](0), })) @@ -816,8 +762,7 @@ var _ = Describe("LaunchTemplates", func() { Expect(ok).To(BeTrue()) }) - It("should calculate memory overhead based on eni limited pods when ENI limited", func() { - ctx = settings.ToContext(ctx, test.Settings()) + It("should calculate memory overhead based on eni limited pods", func() { ctx = options.ToContext(ctx, test.Options(test.OptionsFields{ VMMemoryOverheadPercent: lo.ToPtr[float64](0), })) @@ -827,16 +772,13 @@ var _ = Describe("LaunchTemplates", func() { overhead := it.Overhead.Total() Expect(overhead.Memory().String()).To(Equal("993Mi")) }) - It("should calculate memory overhead based on max pods when not ENI limited", func() { - ctx = settings.ToContext(ctx, test.Settings(test.SettingOptions{ - EnableENILimitedPodDensity: lo.ToPtr(false), - })) - + It("should calculate memory overhead based on max pods", func() { ctx = options.ToContext(ctx, test.Options(test.OptionsFields{ VMMemoryOverheadPercent: lo.ToPtr[float64](0), })) nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyBottlerocket + nodePool.Spec.Template.Spec.Kubelet = &corev1beta1.KubeletConfiguration{MaxPods: lo.ToPtr[int32](110)} it := instancetype.NewInstanceType(ctx, info, nodePool.Spec.Template.Spec.Kubelet, "", nodeClass, nil) overhead := it.Overhead.Total() Expect(overhead.Memory().String()).To(Equal("1565Mi")) @@ -850,17 +792,6 @@ var _ = Describe("LaunchTemplates", func() { ExpectScheduled(ctx, env.Client, pod) ExpectLaunchTemplatesCreatedWithUserDataContaining("--use-max-pods false") }) - It("should specify --use-max-pods=false when not using ENI-based pod density", func() { - ctx = settings.ToContext(ctx, test.Settings(test.SettingOptions{ - EnableENILimitedPodDensity: lo.ToPtr(false), - })) - - ExpectApplied(ctx, env.Client, nodePool, nodeClass) - pod := coretest.UnschedulablePod() - ExpectProvisioned(ctx, env.Client, cluster, cloudProvider, prov, pod) - ExpectScheduled(ctx, env.Client, pod) - ExpectLaunchTemplatesCreatedWithUserDataContaining("--use-max-pods false", "--max-pods=110") - }) It("should specify --use-max-pods=false and --max-pods user value when user specifies maxPods in Provisioner", func() { nodePool.Spec.Template.Spec.Kubelet = &corev1beta1.KubeletConfiguration{MaxPods: aws.Int32(10)} ExpectApplied(ctx, env.Client, nodePool, nodeClass) @@ -1147,14 +1078,14 @@ var _ = Describe("LaunchTemplates", func() { ExpectLaunchTemplatesCreatedWithUserDataNotContaining(v1.LabelNamespaceNodeRestriction) }) Context("Bottlerocket", func() { + BeforeEach(func() { + nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyBottlerocket + nodePool.Spec.Template.Spec.Kubelet = &corev1beta1.KubeletConfiguration{MaxPods: lo.ToPtr[int32](110)} + }) It("should merge in custom user data", func() { - ctx = settings.ToContext(ctx, test.Settings(test.SettingOptions{ - EnableENILimitedPodDensity: lo.ToPtr(false), - })) content, err := os.ReadFile("testdata/br_userdata_input.golden") Expect(err).To(BeNil()) nodeClass.Spec.UserData = aws.String(fmt.Sprintf(string(content), corev1beta1.NodePoolLabelKey)) - nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyBottlerocket nodePool.Spec.Template.Spec.Taints = []v1.Taint{{Key: "foo", Value: "bar", Effect: v1.TaintEffectNoExecute}} nodePool.Spec.Template.Spec.StartupTaints = []v1.Taint{{Key: "baz", Value: "bin", Effect: v1.TaintEffectNoExecute}} ExpectApplied(ctx, env.Client, nodeClass, nodePool) @@ -1168,10 +1099,6 @@ var _ = Describe("LaunchTemplates", func() { ExpectLaunchTemplatesCreatedWithUserData(fmt.Sprintf(string(content), corev1beta1.NodePoolLabelKey, nodePool.Name)) }) It("should bootstrap when custom user data is empty", func() { - ctx = settings.ToContext(ctx, test.Settings(test.SettingOptions{ - EnableENILimitedPodDensity: lo.ToPtr(false), - })) - nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyBottlerocket nodePool.Spec.Template.Spec.Taints = []v1.Taint{{Key: "foo", Value: "bar", Effect: v1.TaintEffectNoExecute}} nodePool.Spec.Template.Spec.StartupTaints = []v1.Taint{{Key: "baz", Value: "bin", Effect: v1.TaintEffectNoExecute}} ExpectApplied(ctx, env.Client, nodeClass, nodePool) @@ -1186,10 +1113,6 @@ var _ = Describe("LaunchTemplates", func() { ExpectLaunchTemplatesCreatedWithUserData(fmt.Sprintf(string(content), corev1beta1.NodePoolLabelKey, nodePool.Name)) }) It("should not bootstrap when provider ref points to a non-existent resource", func() { - ctx = settings.ToContext(ctx, test.Settings(test.SettingOptions{ - EnableENILimitedPodDensity: lo.ToPtr(false), - })) - nodePool.Spec.Template.Spec.NodeClassRef = &corev1beta1.NodeClassReference{Name: "doesnotexist"} ExpectApplied(ctx, env.Client, nodePool) pod := coretest.UnschedulablePod() @@ -1199,7 +1122,6 @@ var _ = Describe("LaunchTemplates", func() { }) It("should not bootstrap on invalid toml user data", func() { nodeClass.Spec.UserData = aws.String("#/bin/bash\n ./not-toml.sh") - nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyBottlerocket ExpectApplied(ctx, env.Client, nodeClass, nodePool) pod := coretest.UnschedulablePod() ExpectProvisioned(ctx, env.Client, cluster, cloudProvider, prov, pod) @@ -1207,7 +1129,6 @@ var _ = Describe("LaunchTemplates", func() { ExpectNotScheduled(ctx, env.Client, pod) }) It("should override system reserved values in user data", func() { - nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyBottlerocket ExpectApplied(ctx, env.Client, nodeClass) nodePool.Spec.Template.Spec.Kubelet = &corev1beta1.KubeletConfiguration{ SystemReserved: v1.ResourceList{ @@ -1233,7 +1154,6 @@ var _ = Describe("LaunchTemplates", func() { }) }) It("should override kube reserved values in user data", func() { - nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyBottlerocket ExpectApplied(ctx, env.Client, nodeClass) nodePool.Spec.Template.Spec.Kubelet = &corev1beta1.KubeletConfiguration{ KubeReserved: v1.ResourceList{ @@ -1259,7 +1179,6 @@ var _ = Describe("LaunchTemplates", func() { }) }) It("should override kube reserved values in user data", func() { - nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyBottlerocket ExpectApplied(ctx, env.Client, nodeClass) nodePool.Spec.Template.Spec.Kubelet = &corev1beta1.KubeletConfiguration{ EvictionHard: map[string]string{ @@ -1285,7 +1204,6 @@ var _ = Describe("LaunchTemplates", func() { }) }) It("should specify max pods value when passing maxPods in configuration", func() { - nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyBottlerocket nodePool.Spec.Template.Spec.Kubelet = &corev1beta1.KubeletConfiguration{ MaxPods: aws.Int32(10), } @@ -1304,7 +1222,6 @@ var _ = Describe("LaunchTemplates", func() { }) }) It("should pass ImageGCHighThresholdPercent when specified", func() { - nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyBottlerocket nodePool.Spec.Template.Spec.Kubelet = &corev1beta1.KubeletConfiguration{ ImageGCHighThresholdPercent: aws.Int32(50), } @@ -1325,7 +1242,6 @@ var _ = Describe("LaunchTemplates", func() { }) }) It("should pass ImageGCLowThresholdPercent when specified", func() { - nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyBottlerocket nodePool.Spec.Template.Spec.Kubelet = &corev1beta1.KubeletConfiguration{ ImageGCLowThresholdPercent: aws.Int32(50), } @@ -1346,7 +1262,6 @@ var _ = Describe("LaunchTemplates", func() { }) }) It("should pass ClusterDNSIP when discovered", func() { - nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyBottlerocket ExpectApplied(ctx, env.Client, nodePool, nodeClass) pod := coretest.UnschedulablePod() ExpectProvisioned(ctx, env.Client, cluster, cloudProvider, prov, pod) @@ -1362,7 +1277,6 @@ var _ = Describe("LaunchTemplates", func() { }) }) It("should pass CPUCFSQuota when specified", func() { - nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyBottlerocket nodePool.Spec.Template.Spec.Kubelet = &corev1beta1.KubeletConfiguration{ CPUCFSQuota: aws.Bool(false), } @@ -1382,11 +1296,10 @@ var _ = Describe("LaunchTemplates", func() { }) }) Context("AL2 Custom UserData", func() { + BeforeEach(func() { + nodePool.Spec.Template.Spec.Kubelet = &corev1beta1.KubeletConfiguration{MaxPods: lo.ToPtr[int32](110)} + }) It("should merge in custom user data", func() { - ctx = settings.ToContext(ctx, test.Settings(test.SettingOptions{ - EnableENILimitedPodDensity: lo.ToPtr(false), - })) - content, err := os.ReadFile("testdata/al2_userdata_input.golden") Expect(err).To(BeNil()) nodeClass.Spec.UserData = aws.String(string(content)) @@ -1400,10 +1313,6 @@ var _ = Describe("LaunchTemplates", func() { ExpectLaunchTemplatesCreatedWithUserData(expectedUserData) }) It("should merge in custom user data when Content-Type is before MIME-Version", func() { - ctx = settings.ToContext(ctx, test.Settings(test.SettingOptions{ - EnableENILimitedPodDensity: lo.ToPtr(false), - })) - content, err := os.ReadFile("testdata/al2_userdata_content_type_first_input.golden") Expect(err).To(BeNil()) nodeClass.Spec.UserData = aws.String(string(content)) @@ -1417,10 +1326,6 @@ var _ = Describe("LaunchTemplates", func() { ExpectLaunchTemplatesCreatedWithUserData(expectedUserData) }) It("should merge in custom user data not in multi-part mime format", func() { - ctx = settings.ToContext(ctx, test.Settings(test.SettingOptions{ - EnableENILimitedPodDensity: lo.ToPtr(false), - })) - content, err := os.ReadFile("testdata/al2_no_mime_userdata_input.golden") Expect(err).To(BeNil()) nodeClass.Spec.UserData = aws.String(string(content)) @@ -1434,9 +1339,6 @@ var _ = Describe("LaunchTemplates", func() { ExpectLaunchTemplatesCreatedWithUserData(expectedUserData) }) It("should handle empty custom user data", func() { - ctx = settings.ToContext(ctx, test.Settings(test.SettingOptions{ - EnableENILimitedPodDensity: lo.ToPtr(false), - })) nodeClass.Spec.UserData = nil ExpectApplied(ctx, env.Client, nodeClass, nodePool) pod := coretest.UnschedulablePod() @@ -1664,11 +1566,9 @@ var _ = Describe("LaunchTemplates", func() { }) Context("Windows Custom UserData", func() { BeforeEach(func() { - ctx = settings.ToContext(ctx, test.Settings(test.SettingOptions{ - EnableENILimitedPodDensity: lo.ToPtr(false), - })) nodePool.Spec.Template.Spec.Requirements = []v1.NodeSelectorRequirement{{Key: v1.LabelOSStable, Operator: v1.NodeSelectorOpIn, Values: []string{string(v1.Windows)}}} nodeClass.Spec.AMIFamily = &v1beta1.AMIFamilyWindows2022 + nodePool.Spec.Template.Spec.Kubelet = &corev1beta1.KubeletConfiguration{MaxPods: lo.ToPtr[int32](110)} }) It("should merge and bootstrap with custom user data", func() { content, err := os.ReadFile("testdata/windows_userdata_input.golden") diff --git a/pkg/providers/pricing/suite_test.go b/pkg/providers/pricing/suite_test.go index d9956301cbd5..cf09d2b78229 100644 --- a/pkg/providers/pricing/suite_test.go +++ b/pkg/providers/pricing/suite_test.go @@ -36,7 +36,6 @@ import ( coretest "sigs.k8s.io/karpenter/pkg/test" "github.com/aws/karpenter/pkg/apis" - "github.com/aws/karpenter/pkg/apis/settings" "github.com/aws/karpenter/pkg/fake" "github.com/aws/karpenter/pkg/operator/options" "github.com/aws/karpenter/pkg/providers/pricing" @@ -59,7 +58,6 @@ var _ = BeforeSuite(func() { env = coretest.NewEnvironment(scheme.Scheme, coretest.WithCRDs(apis.CRDs...)) ctx = coreoptions.ToContext(ctx, coretest.Options()) ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) ctx, stop = context.WithCancel(ctx) awsEnv = test.NewEnvironment(ctx, env) controller = pricing.NewController(awsEnv.PricingProvider) @@ -73,7 +71,6 @@ var _ = AfterSuite(func() { var _ = BeforeEach(func() { ctx = coreoptions.ToContext(ctx, coretest.Options()) ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) awsEnv.Reset() }) diff --git a/pkg/providers/securitygroup/suite_test.go b/pkg/providers/securitygroup/suite_test.go index db2d5cf1daa8..bf6775341d70 100644 --- a/pkg/providers/securitygroup/suite_test.go +++ b/pkg/providers/securitygroup/suite_test.go @@ -26,7 +26,6 @@ import ( . "knative.dev/pkg/logging/testing" "github.com/aws/karpenter/pkg/apis" - "github.com/aws/karpenter/pkg/apis/settings" "github.com/aws/karpenter/pkg/apis/v1beta1" "github.com/aws/karpenter/pkg/operator/options" "github.com/aws/karpenter/pkg/test" @@ -53,7 +52,6 @@ var _ = BeforeSuite(func() { env = coretest.NewEnvironment(scheme.Scheme, coretest.WithCRDs(apis.CRDs...)) ctx = coreoptions.ToContext(ctx, coretest.Options()) ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) ctx, stop = context.WithCancel(ctx) awsEnv = test.NewEnvironment(ctx, env) }) @@ -66,7 +64,6 @@ var _ = AfterSuite(func() { var _ = BeforeEach(func() { ctx = coreoptions.ToContext(ctx, coretest.Options()) ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) nodeClass = test.EC2NodeClass(v1beta1.EC2NodeClass{ Spec: v1beta1.EC2NodeClassSpec{ AMIFamily: aws.String(v1beta1.AMIFamilyAL2), diff --git a/pkg/providers/subnet/suite_test.go b/pkg/providers/subnet/suite_test.go index 6fc642be4267..66ba9fc79b81 100644 --- a/pkg/providers/subnet/suite_test.go +++ b/pkg/providers/subnet/suite_test.go @@ -26,7 +26,6 @@ import ( . "knative.dev/pkg/logging/testing" "github.com/aws/karpenter/pkg/apis" - "github.com/aws/karpenter/pkg/apis/settings" "github.com/aws/karpenter/pkg/apis/v1beta1" "github.com/aws/karpenter/pkg/operator/options" "github.com/aws/karpenter/pkg/test" @@ -53,7 +52,6 @@ var _ = BeforeSuite(func() { env = coretest.NewEnvironment(scheme.Scheme, coretest.WithCRDs(apis.CRDs...)) ctx = coreoptions.ToContext(ctx, coretest.Options()) ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) ctx, stop = context.WithCancel(ctx) awsEnv = test.NewEnvironment(ctx, env) }) @@ -66,7 +64,6 @@ var _ = AfterSuite(func() { var _ = BeforeEach(func() { ctx = coreoptions.ToContext(ctx, coretest.Options()) ctx = options.ToContext(ctx, test.Options()) - ctx = settings.ToContext(ctx, test.Settings()) nodeClass = test.EC2NodeClass(v1beta1.EC2NodeClass{ Spec: v1beta1.EC2NodeClassSpec{ AMIFamily: aws.String(v1beta1.AMIFamilyAL2), diff --git a/pkg/test/environment.go b/pkg/test/environment.go index 5ffc358d8e1f..554554c363e3 100644 --- a/pkg/test/environment.go +++ b/pkg/test/environment.go @@ -24,7 +24,6 @@ import ( "github.com/patrickmn/go-cache" - coreapis "sigs.k8s.io/karpenter/pkg/apis" corev1beta1 "sigs.k8s.io/karpenter/pkg/apis/v1beta1" "sigs.k8s.io/karpenter/pkg/operator/scheme" @@ -49,7 +48,6 @@ import ( func init() { lo.Must0(apis.AddToScheme(scheme.Scheme)) corev1beta1.NormalizedLabels = lo.Assign(corev1beta1.NormalizedLabels, map[string]string{"topology.ebs.csi.aws.com/zone": corev1.LabelTopologyZone}) - coreapis.Settings = append(coreapis.Settings, apis.Settings...) } type Environment struct { diff --git a/pkg/test/settings.go b/pkg/test/settings.go deleted file mode 100644 index baff303ebf2c..000000000000 --- a/pkg/test/settings.go +++ /dev/null @@ -1,58 +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 test - -import ( - "fmt" - - "github.com/imdario/mergo" - "github.com/samber/lo" - - awssettings "github.com/aws/karpenter/pkg/apis/settings" -) - -type SettingOptions struct { - ClusterName *string - ClusterEndpoint *string - DefaultInstanceProfile *string - EnablePodENI *bool - EnableENILimitedPodDensity *bool - IsolatedVPC *bool - VMMemoryOverheadPercent *float64 - InterruptionQueueName *string - Tags map[string]string - ReservedENIs *int -} - -func Settings(overrides ...SettingOptions) *awssettings.Settings { - options := SettingOptions{} - for _, override := range overrides { - if err := mergo.Merge(&options, override, mergo.WithOverride); err != nil { - panic(fmt.Sprintf("Failed to merge settings: %s", err)) - } - } - return &awssettings.Settings{ - ClusterName: lo.FromPtrOr(options.ClusterName, "test-cluster"), - ClusterEndpoint: lo.FromPtrOr(options.ClusterEndpoint, "https://test-cluster"), - DefaultInstanceProfile: lo.FromPtrOr(options.DefaultInstanceProfile, "test-instance-profile"), - EnablePodENI: lo.FromPtrOr(options.EnablePodENI, true), - EnableENILimitedPodDensity: lo.FromPtrOr(options.EnableENILimitedPodDensity, true), - IsolatedVPC: lo.FromPtrOr(options.IsolatedVPC, false), - VMMemoryOverheadPercent: lo.FromPtrOr(options.VMMemoryOverheadPercent, 0.075), - InterruptionQueueName: lo.FromPtrOr(options.InterruptionQueueName, ""), - Tags: options.Tags, - ReservedENIs: lo.FromPtrOr(options.ReservedENIs, 0), - } -} diff --git a/test/pkg/environment/aws/environment.go b/test/pkg/environment/aws/environment.go index 8af11582f061..d9cae2ca5b30 100644 --- a/test/pkg/environment/aws/environment.go +++ b/test/pkg/environment/aws/environment.go @@ -38,7 +38,6 @@ import ( corev1 "k8s.io/api/core/v1" "k8s.io/utils/env" - coreapis "sigs.k8s.io/karpenter/pkg/apis" corev1beta1 "sigs.k8s.io/karpenter/pkg/apis/v1beta1" "sigs.k8s.io/karpenter/pkg/operator/scheme" @@ -52,7 +51,6 @@ import ( func init() { lo.Must0(apis.AddToScheme(scheme.Scheme)) corev1beta1.NormalizedLabels = lo.Assign(corev1beta1.NormalizedLabels, map[string]string{"topology.ebs.csi.aws.com/zone": corev1.LabelTopologyZone}) - coreapis.Settings = append(coreapis.Settings, apis.Settings...) } const WindowsDefaultImage = "mcr.microsoft.com/oss/kubernetes/pause:3.9" diff --git a/test/pkg/environment/aws/setup.go b/test/pkg/environment/aws/setup.go index fbaee8091bb9..8d0f772fa21f 100644 --- a/test/pkg/environment/aws/setup.go +++ b/test/pkg/environment/aws/setup.go @@ -22,7 +22,6 @@ import ( ) var persistedSettings []v1.EnvVar -var persistedSettingsLegacy = &v1.ConfigMap{} var ( CleanableObjects = []client.Object{ @@ -32,7 +31,6 @@ var ( func (env *Environment) BeforeEach() { persistedSettings = env.ExpectSettings() - persistedSettingsLegacy = env.ExpectSettingsLegacy() env.Environment.BeforeEach() } @@ -45,5 +43,4 @@ func (env *Environment) AfterEach() { env.Environment.AfterEach() // Ensure we reset settings after collecting the controller logs env.ExpectSettingsReplaced(persistedSettings...) - env.ExpectSettingsReplacedLegacy(persistedSettingsLegacy.Data) } diff --git a/test/pkg/environment/common/environment.go b/test/pkg/environment/common/environment.go index 1530e6914ced..ad10580cbe2c 100644 --- a/test/pkg/environment/common/environment.go +++ b/test/pkg/environment/common/environment.go @@ -40,7 +40,6 @@ import ( coreapis "sigs.k8s.io/karpenter/pkg/apis" corev1beta1 "sigs.k8s.io/karpenter/pkg/apis/v1beta1" "sigs.k8s.io/karpenter/pkg/operator" - "sigs.k8s.io/karpenter/pkg/operator/injection" coretest "sigs.k8s.io/karpenter/pkg/test" "github.com/aws/karpenter/pkg/apis" @@ -72,8 +71,6 @@ func NewEnvironment(t *testing.T) *Environment { client := NewClient(ctx, config) lo.Must0(os.Setenv(system.NamespaceEnvKey, "karpenter")) - kubernetesInterface := kubernetes.NewForConfigOrDie(config) - ctx = injection.WithSettingsOrDie(ctx, kubernetesInterface, apis.Settings...) if val, ok := os.LookupEnv("GIT_REF"); ok { ctx = context.WithValue(ctx, GitRefContextKey, val) } diff --git a/test/pkg/environment/common/expectations.go b/test/pkg/environment/common/expectations.go index c138e1f0f34a..ec589e69baf7 100644 --- a/test/pkg/environment/common/expectations.go +++ b/test/pkg/environment/common/expectations.go @@ -167,30 +167,6 @@ func (env *Environment) ExpectSettingsRemoved(vars ...v1.EnvVar) { } } -// ExpectSettingsLegacy gets the karpenter-global-settings ConfigMap -func (env *Environment) ExpectSettingsLegacy() *v1.ConfigMap { - GinkgoHelper() - return env.ExpectConfigMapExists(types.NamespacedName{Namespace: "karpenter", Name: "karpenter-global-settings"}) -} - -// ExpectSettingsReplacedLegacy performs a full replace of the settings, replacing the existing data -// with the data passed through -func (env *Environment) ExpectSettingsReplacedLegacy(data ...map[string]string) { - GinkgoHelper() - if env.ExpectConfigMapDataReplaced(types.NamespacedName{Namespace: "karpenter", Name: "karpenter-global-settings"}, data...) { - env.EventuallyExpectKarpenterRestarted() - } -} - -// ExpectSettingsOverriddenLegacy overrides specific values specified through data. It only overrides -// or inserts the specific values specified and does not upsert any of the existing data -func (env *Environment) ExpectSettingsOverriddenLegacy(data ...map[string]string) { - GinkgoHelper() - if env.ExpectConfigMapDataOverridden(types.NamespacedName{Namespace: "karpenter", Name: "karpenter-global-settings"}, data...) { - env.EventuallyExpectKarpenterRestarted() - } -} - func (env *Environment) ExpectConfigMapExists(key types.NamespacedName) *v1.ConfigMap { GinkgoHelper() cm := &v1.ConfigMap{} diff --git a/test/pkg/environment/common/setup.go b/test/pkg/environment/common/setup.go index 95c257adee8f..6b714ce6553b 100644 --- a/test/pkg/environment/common/setup.go +++ b/test/pkg/environment/common/setup.go @@ -32,9 +32,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/apiutil" - "sigs.k8s.io/karpenter/pkg/apis" corev1beta1 "sigs.k8s.io/karpenter/pkg/apis/v1beta1" - "sigs.k8s.io/karpenter/pkg/operator/injection" "sigs.k8s.io/karpenter/pkg/test" "sigs.k8s.io/karpenter/pkg/utils/pod" @@ -62,7 +60,6 @@ var ( // nolint:gocyclo func (env *Environment) BeforeEach() { debug.BeforeEach(env.Context, env.Config, env.Client) - env.Context = injection.WithSettingsOrDie(env.Context, env.KubeClient, apis.Settings...) // Expect this cluster to be clean for test runs to execute successfully env.ExpectCleanCluster() diff --git a/test/suites/integration/cni_test.go b/test/suites/integration/cni_test.go index 56de8d607dac..97ce0999001a 100644 --- a/test/suites/integration/cni_test.go +++ b/test/suites/integration/cni_test.go @@ -25,31 +25,33 @@ import ( corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/types" + "sigs.k8s.io/karpenter/pkg/apis/v1beta1" + "sigs.k8s.io/karpenter/pkg/test" ) var _ = Describe("CNITests", func() { - It("should set max pods to 110 when AWSENILimited when AWS_ENI_LIMITED_POD_DENSITY is false", func() { - env.ExpectSettingsOverriddenLegacy(map[string]string{"aws.enableENILimitedPodDensity": "false"}) + It("should set eni-limited maxPods", func() { pod := test.Pod() env.ExpectCreated(pod, nodeClass, nodePool) env.EventuallyExpectHealthy(pod) env.ExpectCreatedNodeCount("==", 1) - var node corev1.Node Expect(env.Client.Get(env.Context, types.NamespacedName{Name: pod.Spec.NodeName}, &node)).To(Succeed()) allocatablePods, _ := node.Status.Allocatable.Pods().AsInt64() - Expect(allocatablePods).To(Equal(int64(110))) + Expect(allocatablePods).To(Equal(eniLimitedPodsFor(node.Labels["node.kubernetes.io/instance-type"]))) }) - It("should set eni-limited maxPods when AWSENILimited when AWS_ENI_LIMITED_POD_DENSITY is true", func() { + It("should set max pods to 110 if maxPods is set in kubelet", func() { + nodePool.Spec.Template.Spec.Kubelet = &v1beta1.KubeletConfiguration{MaxPods: lo.ToPtr[int32](110)} pod := test.Pod() env.ExpectCreated(pod, nodeClass, nodePool) env.EventuallyExpectHealthy(pod) env.ExpectCreatedNodeCount("==", 1) + var node corev1.Node Expect(env.Client.Get(env.Context, types.NamespacedName{Name: pod.Spec.NodeName}, &node)).To(Succeed()) allocatablePods, _ := node.Status.Allocatable.Pods().AsInt64() - Expect(allocatablePods).To(Equal(eniLimitedPodsFor(node.Labels["node.kubernetes.io/instance-type"]))) + Expect(allocatablePods).To(Equal(int64(110))) }) It("should set maxPods when reservedENIs is set", func() { env.ExpectSettingsOverridden(corev1.EnvVar{Name: "RESERVED_ENIS", Value: "1"}) diff --git a/test/suites/nodeclaim/garbage_collection_test.go b/test/suites/nodeclaim/garbage_collection_test.go index fdcaf79a7600..eedf0f167cb2 100644 --- a/test/suites/nodeclaim/garbage_collection_test.go +++ b/test/suites/nodeclaim/garbage_collection_test.go @@ -30,7 +30,6 @@ import ( corev1beta1 "sigs.k8s.io/karpenter/pkg/apis/v1beta1" coretest "sigs.k8s.io/karpenter/pkg/test" - "github.com/aws/karpenter/pkg/apis/settings" awserrors "github.com/aws/karpenter/pkg/errors" "github.com/aws/karpenter/pkg/utils" environmentaws "github.com/aws/karpenter/test/pkg/environment/aws" @@ -49,9 +48,6 @@ var _ = Describe("GarbageCollection", func() { customAMI = env.GetCustomAMI("/aws/service/eks/optimized-ami/%s/amazon-linux-2/recommended/image_id", 1) instanceInput = &ec2.RunInstancesInput{ InstanceType: aws.String("c5.large"), - IamInstanceProfile: &ec2.IamInstanceProfileSpecification{ - Name: aws.String(settings.FromContext(env.Context).DefaultInstanceProfile), - }, SecurityGroupIds: lo.Map(securityGroups, func(s environmentaws.SecurityGroup, _ int) *string { return s.GroupIdentifier.GroupId }), diff --git a/tools/allocatable-diff/go.mod b/tools/allocatable-diff/go.mod index b29dea08ce28..c04c8db3ca1a 100644 --- a/tools/allocatable-diff/go.mod +++ b/tools/allocatable-diff/go.mod @@ -3,45 +3,47 @@ module github.com/aws/karpenter/tools/allocatable-diff go 1.21 require ( - github.com/aws/karpenter v0.30.1-0.20230908220553-f39c1d0c2d4e - github.com/aws/karpenter-core v0.30.1-0.20230908181031-cbc03e98ef14 + github.com/aws/karpenter v0.32.2 + github.com/aws/karpenter-core v0.32.2 github.com/samber/lo v1.38.1 - k8s.io/api v0.26.6 - k8s.io/apimachinery v0.26.6 - k8s.io/client-go v0.26.6 - sigs.k8s.io/controller-runtime v0.14.6 + k8s.io/api v0.28.4 + k8s.io/apimachinery v0.28.4 + k8s.io/client-go v0.28.4 + sigs.k8s.io/controller-runtime v0.16.3 ) require ( contrib.go.opencensus.io/exporter/ocagent v0.7.1-0.20200907061046-05415f1de66d // indirect - contrib.go.opencensus.io/exporter/prometheus v0.4.0 // indirect - github.com/aws/aws-sdk-go v1.44.328 // indirect + contrib.go.opencensus.io/exporter/prometheus v0.4.2 // indirect + github.com/aws/aws-sdk-go v1.48.0 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/blang/semver/v4 v4.0.0 // indirect github.com/blendle/zapdriver v1.3.1 // indirect github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/emicklei/go-restful/v3 v3.9.0 // indirect - github.com/evanphx/json-patch/v5 v5.6.0 // indirect + github.com/emicklei/go-restful/v3 v3.11.0 // indirect + github.com/evanphx/json-patch/v5 v5.7.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/go-kit/log v0.2.1 // indirect - github.com/go-logfmt/logfmt v0.5.1 // indirect - github.com/go-logr/logr v1.2.4 // indirect - github.com/go-logr/zapr v1.2.4 // indirect - github.com/go-openapi/jsonpointer v0.19.6 // indirect - github.com/go-openapi/jsonreference v0.20.1 // indirect - github.com/go-openapi/swag v0.22.3 // indirect + github.com/go-logfmt/logfmt v0.6.0 // indirect + github.com/go-logr/logr v1.3.0 // indirect + github.com/go-logr/zapr v1.3.0 // indirect + github.com/go-openapi/jsonpointer v0.20.0 // indirect + github.com/go-openapi/jsonreference v0.20.2 // indirect + github.com/go-openapi/swag v0.22.4 // indirect + github.com/gobuffalo/flect v1.0.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect - github.com/google/gnostic v0.5.7-v3refs // indirect - github.com/google/go-cmp v0.5.9 // indirect + github.com/google/gnostic-models v0.6.8 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/google/gofuzz v1.2.0 // indirect - github.com/google/uuid v1.3.0 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 // indirect - github.com/hashicorp/golang-lru v0.5.4 // indirect + github.com/google/uuid v1.3.1 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/imdario/mergo v0.3.16 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect @@ -53,45 +55,46 @@ require ( github.com/modern-go/reflect2 v1.0.2 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/patrickmn/go-cache v2.1.0+incompatible // indirect - github.com/pelletier/go-toml/v2 v2.0.9 // indirect + github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/prometheus/client_golang v1.16.0 // indirect - github.com/prometheus/client_model v0.4.0 // indirect - github.com/prometheus/common v0.42.0 // indirect - github.com/prometheus/procfs v0.10.1 // indirect - github.com/prometheus/statsd_exporter v0.21.0 // indirect + github.com/prometheus/client_golang v1.17.0 // indirect + github.com/prometheus/client_model v0.5.0 // indirect + github.com/prometheus/common v0.44.0 // indirect + github.com/prometheus/procfs v0.12.0 // indirect + github.com/prometheus/statsd_exporter v0.24.0 // indirect + github.com/spf13/cobra v1.7.0 // indirect github.com/spf13/pflag v1.0.5 // indirect go.opencensus.io v0.24.0 // indirect - go.uber.org/atomic v1.9.0 // indirect - go.uber.org/automaxprocs v1.4.0 // indirect + go.uber.org/automaxprocs v1.5.3 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.25.0 // indirect - golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect + go.uber.org/zap v1.26.0 // indirect + golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect golang.org/x/net v0.17.0 // indirect - golang.org/x/oauth2 v0.8.0 // indirect - golang.org/x/sync v0.3.0 // indirect + golang.org/x/oauth2 v0.13.0 // indirect + golang.org/x/sync v0.4.0 // indirect golang.org/x/sys v0.13.0 // indirect golang.org/x/term v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect - gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect - google.golang.org/api v0.124.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect - google.golang.org/grpc v1.56.3 // indirect - google.golang.org/protobuf v1.30.0 // indirect + gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect + google.golang.org/api v0.146.0 // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20231009173412-8bfb1ae86b6c // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231009173412-8bfb1ae86b6c // indirect + google.golang.org/grpc v1.58.3 // indirect + google.golang.org/protobuf v1.31.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/apiextensions-apiserver v0.26.6 // indirect - k8s.io/cloud-provider v0.26.6 // indirect - k8s.io/component-base v0.26.6 // indirect - k8s.io/csi-translation-lib v0.26.6 // indirect - k8s.io/klog/v2 v2.100.1 // indirect - k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f // indirect - k8s.io/utils v0.0.0-20230209194617-a36077c30491 // indirect - knative.dev/pkg v0.0.0-20230712131115-7051d301e7f4 // indirect + k8s.io/apiextensions-apiserver v0.28.3 // indirect + k8s.io/cloud-provider v0.28.4 // indirect + k8s.io/component-base v0.28.4 // indirect + k8s.io/csi-translation-lib v0.28.4 // indirect + k8s.io/klog/v2 v2.110.1 // indirect + k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect + k8s.io/utils v0.0.0-20230726121419-3b25d923346b // indirect + knative.dev/pkg v0.0.0-20231010144348-ca8c009405dd // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect - sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect + sigs.k8s.io/structured-merge-diff/v4 v4.3.0 // indirect sigs.k8s.io/yaml v1.3.0 // indirect ) diff --git a/tools/allocatable-diff/go.sum b/tools/allocatable-diff/go.sum index 3a11219d2c59..577956f47682 100644 --- a/tools/allocatable-diff/go.sum +++ b/tools/allocatable-diff/go.sum @@ -32,8 +32,8 @@ cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RX 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= -contrib.go.opencensus.io/exporter/prometheus v0.4.0 h1:0QfIkj9z/iVZgK31D9H9ohjjIDApI2GOPScCKwxedbs= -contrib.go.opencensus.io/exporter/prometheus v0.4.0/go.mod h1:o7cosnyfuPVK0tB8q0QmaQNhGnptITnPQB+z1+qeFB0= +contrib.go.opencensus.io/exporter/prometheus v0.4.2 h1:sqfsYl5GIY/L570iT+l93ehxaWJs2/OwXtiWwew3oAg= +contrib.go.opencensus.io/exporter/prometheus v0.4.2/go.mod h1:dvEHbiKmgvbr5pjaF9fpw1KeYcjrnC1J8B+JKjsZyRQ= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= @@ -44,18 +44,16 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuy github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= github.com/avast/retry-go v3.0.0+incompatible h1:4SOWQ7Qs+oroOTQOYnAHqelpCO0biHSxpiH9JdtuBj0= github.com/avast/retry-go v3.0.0+incompatible/go.mod h1:XtSnn+n/sHqQIpZ10K1qAevBhOOCWBLXXy3hyiqqBrY= -github.com/aws/aws-sdk-go v1.44.328 h1:WBwlf8ym9SDQ/GTIBO9eXyvwappKJyOetWJKl4mT7ZU= -github.com/aws/aws-sdk-go v1.44.328/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= -github.com/aws/karpenter v0.30.1-0.20230908220553-f39c1d0c2d4e h1:v5F7OYr+mfAXxL2h6pDozA0LpM0togUGpuqFDU2vY64= -github.com/aws/karpenter v0.30.1-0.20230908220553-f39c1d0c2d4e/go.mod h1:uzrENIVNN7VjEfEmeUWPHjKEL8VXcz86DDFQY0/qYFw= -github.com/aws/karpenter-core v0.30.1-0.20230908181031-cbc03e98ef14 h1:sBNA922mx/1UIq2Y1zI21R3/bGs1q9Mj/9xILbFI6zo= -github.com/aws/karpenter-core v0.30.1-0.20230908181031-cbc03e98ef14/go.mod h1:AQl8m8OtgO2N8IlZlzAU6MTrJTJSbe6K4GwdRUNSJVc= -github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= -github.com/benbjohnson/clock v1.3.0 h1:ip6w0uFQkncKQ979AypyG0ER7mqUSBdKLOgAle/AT8A= -github.com/benbjohnson/clock v1.3.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/aws/aws-sdk-go v1.48.0 h1:1SeJ8agckRDQvnSCt1dGZYAwUaoD2Ixj6IaXB4LCv8Q= +github.com/aws/aws-sdk-go v1.48.0/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= +github.com/aws/karpenter v0.32.2 h1:Yrr/kvkYdhh11594BtaJJwgCq5Jf2rVl5KeMYb95CTQ= +github.com/aws/karpenter v0.32.2/go.mod h1:NPAqHJItiXAfBVAIVGFbyCse79UzX2dpbjZRBtWYX1E= +github.com/aws/karpenter-core v0.32.2 h1:jUKhC2qrk+/ZO9okx4iIE9Ju6f0gFG90eSPppJtqbDk= +github.com/aws/karpenter-core v0.32.2/go.mod h1:RNih2g6qCiah8rFaZ7HkmClIK66Hjj38z3DbWnWGM2w= 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= @@ -68,6 +66,7 @@ github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= @@ -75,22 +74,21 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= 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/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= 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/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= -github.com/emicklei/go-restful/v3 v3.9.0 h1:XwGDlfxEnQZzuopoqxwSEllNcCOM9DhhFyhFIIGKwxE= -github.com/emicklei/go-restful/v3 v3.9.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= +github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g= +github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= 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/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.12.0+incompatible h1:4onqiflcdA9EOZ4RxV643DvftH5pOlLGNtQ5lPWQu84= -github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch/v5 v5.6.0 h1:b91NhWfaz02IuVxO9faSllyAtNXHMPkC5J8sJCLunww= -github.com/evanphx/json-patch/v5 v5.6.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= +github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI= +github.com/evanphx/json-patch v5.7.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/evanphx/json-patch/v5 v5.7.0 h1:nJqP7uwL84RJInrohHfW0Fx3awjbm8qZeFv0nW9SYGc= +github.com/evanphx/json-patch/v5 v5.7.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= @@ -100,27 +98,32 @@ github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2 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/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-kit/log v0.2.1 h1:MRVx0/zhvdseW+Gza6N9rVzU/IVzaeE1SFI4raAhmBU= github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= 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/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logfmt/logfmt v0.5.1 h1:otpy5pqBCBZ1ng9RQ0dPu4PN7ba75Y/aA+UpowDyNVA= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/zapr v1.2.4 h1:QHVo+6stLbfJmYGkQ7uGHUCu5hnAFAj6mDe6Ea0SeOo= -github.com/go-logr/zapr v1.2.4/go.mod h1:FyHWQIzQORZ0QVE1BtVHv3cKtNLuXsbNLtpuhNapBOA= -github.com/go-openapi/jsonpointer v0.19.6 h1:eCs3fxoIi3Wh6vtgmLTOjdhSpiqphQ+DaPn38N2ZdrE= +github.com/go-logfmt/logfmt v0.6.0 h1:wGYYu3uicYdqXVgoYbvnkrPVXkuLM1p1ifugDMEdRi4= +github.com/go-logfmt/logfmt v0.6.0/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ= +github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg= github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= -github.com/go-openapi/jsonreference v0.20.1 h1:FBLnyygC4/IZZr893oiomc9XaghoveYTrLC1F86HID8= -github.com/go-openapi/jsonreference v0.20.1/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= -github.com/go-openapi/swag v0.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g= +github.com/go-openapi/jsonpointer v0.20.0 h1:ESKJdU9ASRfaPNOPRx12IUyA1vn3R9GiE3KYD14BXdQ= +github.com/go-openapi/jsonpointer v0.20.0/go.mod h1:6PGzBjjIIumbLYysB73Klnms1mwnU4G3YHOECG3CedA= +github.com/go-openapi/jsonreference v0.20.2 h1:3sVjiK66+uXK/6oQ8xgcRKcFgQ5KXa2KvnJRumpMGbE= +github.com/go-openapi/jsonreference v0.20.2/go.mod h1:Bl1zwGIM8/wsvqjsOQLJ/SH+En5Ap4rVB5KVcIDZG2k= github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-openapi/swag v0.22.4 h1:QLMzNJnMGPRNDCbySlcj1x01tzU8/9LTTL9hZZZogBU= +github.com/go-openapi/swag v0.22.4/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572/go.mod h1:9Pwr4B2jHnOSGXyyzV8ROjYa2ojvAY6HCGYYfMoC3Ls= +github.com/gobuffalo/flect v1.0.2 h1:eqjPGSo2WmjgY2XlpGwo2NXgL3RucAKo4k4qQMNA5sA= +github.com/gobuffalo/flect v1.0.2/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs= github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= @@ -159,8 +162,8 @@ github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/gnostic v0.5.7-v3refs h1:FhTMOKj2VhjpouxvWJAV1TL304uMlb9zcDqkl6cEI54= -github.com/google/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= +github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= +github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= @@ -171,8 +174,10 @@ github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v1.0.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= @@ -185,25 +190,26 @@ 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-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJYCmNdQXq6neHJOYx3V6jnqNEec= -github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98 h1:pUa4ghanp6q4IJHwE9RwLgmVFfReJN+KbQ8ExNEUUoQ= +github.com/google/pprof v0.0.0-20230926050212-f7f687d19a98/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/grpc-ecosystem/grpc-gateway v1.14.6/go.mod h1:zdiPV4Yse/1gnckTHtghG4GkDEdKCRJduHpTxT3/jcw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 h1:lLT7ZLSzGLI08vc9cpd+tYmNWjdKDqyr/2L+f6U12Fk= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0 h1:RtRsiaGvWxcwd8y3BiRZxsylPT8hLWZ5SPcfI+3IDNk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.18.0/go.mod h1:TzP6duP4Py2pHLVPPQp42aoYI92+PCrVotyR5e8Vqlk= 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/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= -github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= 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= @@ -228,7 +234,6 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxv github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= @@ -254,58 +259,70 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq 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/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/onsi/ginkgo/v2 v2.11.0 h1:WgqUCUt/lT6yXoQ8Wef0fsNn5cAuMK7+KT9UFRz2tcU= -github.com/onsi/ginkgo/v2 v2.11.0/go.mod h1:ZhrRA5XmEE3x3rhlzamx/JJvujdZoJ2uvgI7kR0iZvM= -github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= -github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= +github.com/onsi/ginkgo/v2 v2.13.0 h1:0jY9lJquiL8fcf3M4LAXN5aMlS/b2BV86HFFPCPMgE4= +github.com/onsi/ginkgo/v2 v2.13.0/go.mod h1:TE309ZR8s5FsKKpuB1YAQYBzCaAfUgatB/xlT/ETL/o= +github.com/onsi/gomega v1.29.0 h1:KIA/t2t5UBzoirT4H9tsML45GEbo3ouUnBHsCfD2tVg= +github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ= 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/pelletier/go-toml/v2 v2.0.9 h1:uH2qQXheeefCCkuBBSLi7jCiSmj3VRh2+Goq2N7Xxu0= -github.com/pelletier/go-toml/v2 v2.0.9/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= +github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= 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/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= +github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.16.0 h1:yk/hx9hDbrGHovbci4BY+pRMfSuuat626eFsHb7tmT8= -github.com/prometheus/client_golang v1.16.0/go.mod h1:Zsulrv/L9oM40tJ7T815tM89lFEugiJ9HzIqaAx4LKc= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_golang v1.13.0/go.mod h1:vTeo+zgvILHsnnj/39Ou/1fPN5nJFOEMgftOUOmlvYQ= +github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= +github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.4.0 h1:5lQXD3cAg1OXBf4Wq03gTrXHeaV0TQvGfUooCfx1yqY= -github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= +github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.28.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.42.0 h1:EKsfXEYo4JpWMHH5cg+KOUWeuJSov1Id8zGR8eeI1YM= -github.com/prometheus/common v0.42.0/go.mod h1:xBwqVerjNdUDjgODMpudtOMwlOwf2SaTr1yjz4b7Zbc= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/common v0.35.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= +github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= +github.com/prometheus/common v0.44.0 h1:+5BrQJwiBB9xsMygAB3TNvpQKOwlkc25LbISbrdOOfY= +github.com/prometheus/common v0.44.0/go.mod h1:ofAIvZbQ1e/nugmZGz4/qCb9Ap1VoSTIO7x0VV9VvuY= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.10.1 h1:kYK1Va/YMlutzCGazswoHKo//tZVlFpKYh+PymziUAg= -github.com/prometheus/procfs v0.10.1/go.mod h1:nwNm2aOCAYw8uTR/9bWRREkZFxAUcWzPHWJq+XBB/FM= -github.com/prometheus/statsd_exporter v0.21.0 h1:hA05Q5RFeIjgwKIYEdFd59xu5Wwaznf33yKI+pyX6T8= -github.com/prometheus/statsd_exporter v0.21.0/go.mod h1:rbT83sZq2V+p73lHhPZfMc3MLCHmSHelCh9hSGYNLTQ= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= +github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= +github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= +github.com/prometheus/statsd_exporter v0.22.7/go.mod h1:N/TevpjkIh9ccs6nuzY3jQn9dFqnUakOjnEuMPJJJnI= +github.com/prometheus/statsd_exporter v0.24.0 h1:aZmN6CzS2H1Non1JKZdjkQlAkDtGoQBYIESk2SlU1OI= +github.com/prometheus/statsd_exporter v0.24.0/go.mod h1:+dQiRTqn9DnPmN5mI5Xond+k8nuRKzdgh1omxh9OgFY= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/samber/lo v1.38.1 h1:j2XEAqXKb09Am4ebOg31SpvzUTTs6EN3VfgeLUhPdXM= github.com/samber/lo v1.38.1/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= 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/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/spf13/cobra v1.7.0 h1:hyqWnYt1ZQShIddO5kBpj3vu05/++x6tJ6dg8EC572I= +github.com/spf13/cobra v1.7.0/go.mod h1:uLxZILRyS/50WlhOIKD7W6V5bgeIt+4sICxh6uRMrb0= 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/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= 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.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -313,19 +330,17 @@ github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpE github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= +github.com/stvp/go-udp-testing v0.0.0-20201019212854-469649b16807/go.mod h1:7jxmlfBCDBXRzr0eAQJ48XC1hBu1np4CS5+cHEYfwpc= 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/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= @@ -336,22 +351,16 @@ go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/automaxprocs v1.4.0 h1:CpDZl6aOlLhReez+8S3eEotD7Jx0Os++lemPlMULQP0= -go.uber.org/automaxprocs v1.4.0/go.mod h1:/mTEdr7LvHhs0v7mjdxDreTz1OG5zdZGqgOnhWiR/+Q= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= -go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= +go.uber.org/automaxprocs v1.5.3 h1:kWazyxZUrS3Gs4qUpbwo5kEIMGe/DAvi5Z4tl2NW4j8= +go.uber.org/automaxprocs v1.5.3/go.mod h1:eRbA25aqJrxAbsLO0xy5jVwPt7FQnRgjW+efnwa1WM0= +go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= +go.uber.org/goleak v1.2.1/go.mod h1:qlT2yGI9QafXHhZZLxlSuNsMw3FFLxBr+tBRlmO1xH4= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= -go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c= -go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -369,8 +378,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0 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/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= -golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM= -golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= +golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= 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= @@ -391,10 +400,9 @@ golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzB golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= -golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= -golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.13.0 h1:I/DsJXRlw/8l/0c24sM9yb0T4z9liZTduXvdAWYiysY= +golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -427,10 +435,10 @@ golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -439,8 +447,9 @@ golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8= -golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.13.0 h1:jDDenyj+WgFtmV3zYVoi8aE2BwtXFLWOA67ZfNWftiY= +golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -451,10 +460,10 @@ golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20220601150217-0de741cfad7f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= -golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= +golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -489,20 +498,19 @@ golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220708085239-5a0f0661e09d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -512,9 +520,9 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -562,16 +570,15 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= -golang.org/x/tools v0.9.3 h1:Gn1I8+64MsuTb/HpH+LmQtNas23LhUVr3rYZ0eKuaMM= -golang.org/x/tools v0.9.3/go.mod h1:owI94Op576fPu3cIGQeHs3joujW/2Oc6MtlxbF5dfNc= +golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= +golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gomodules.xyz/jsonpatch/v2 v2.2.0 h1:4pT439QV83L+G9FkcCriY6EkpcK6r6bK+A5FBUMI7qY= -gomodules.xyz/jsonpatch/v2 v2.2.0/go.mod h1:WXp+iVDkoLQqPudfQ9GBlwB2eZ5DKOnjQZCYdOS8GPY= +gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw= +gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= @@ -589,16 +596,16 @@ google.golang.org/api v0.25.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0M google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.124.0 h1:dP6Ef1VgOGqQ8eiv4GiY8RhmeyqzovcXBYPDUYG8Syo= -google.golang.org/api v0.124.0/go.mod h1:xu2HQurE5gi/3t1aFCvhPD781p0a3p11sdunTJ2BlP4= +google.golang.org/api v0.146.0 h1:9aBYT4vQXt9dhCuLNfwfd3zpwu8atg0yPkjBymwSrOM= +google.golang.org/api v0.146.0/go.mod h1:OARJqIfoYjXJj4C1AiBSXYZt03qsoz8FQYU6fBEfrHM= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= -google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -630,9 +637,12 @@ google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7Fc google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 h1:KpwkzHKEF7B9Zxg18WzOa7djJ+Ha5DzthMyZYQfEn2A= -google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1/go.mod h1:nKE/iIaLqn2bQwXBg8f1g2Ylh6r5MN5CmZvuzZCgsCU= +google.golang.org/genproto v0.0.0-20231009173412-8bfb1ae86b6c h1:ml3TAUoIIzQUtX88s/icpXCFW9lV5VwsuIuS1htNjKY= +google.golang.org/genproto v0.0.0-20231009173412-8bfb1ae86b6c/go.mod h1:MugzuwC+GYOxyF0XUGQvsT97bOgWCV7MM1XMc5FZv8E= +google.golang.org/genproto/googleapis/api v0.0.0-20231009173412-8bfb1ae86b6c h1:0RtEmmHjemvUXloH7+RuBSIw7n+GEHMOMY1CkGYnWq4= +google.golang.org/genproto/googleapis/api v0.0.0-20231009173412-8bfb1ae86b6c/go.mod h1:Wth13BrWMRN/G+guBLupKa6fslcWZv14R0ZKDRkNfY8= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231009173412-8bfb1ae86b6c h1:jHkCUWkseRf+W+edG5hMzr/Uh1xkDREY4caybAq4dpY= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231009173412-8bfb1ae86b6c/go.mod h1:4cYg8o5yUbm77w8ZX00LhMVNl/YVBFJRYWDc0uYWMs0= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= @@ -646,8 +656,8 @@ google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3Iji google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.56.3 h1:8I4C0Yq1EjstUzUJzpcRVbuYA2mODtEmpWiQoN/b2nc= -google.golang.org/grpc v1.56.3/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= +google.golang.org/grpc v1.58.3 h1:BjnpXut1btbtgN/6sp+brB2Kbm2LjNXnidYujAVbSoQ= +google.golang.org/grpc v1.58.3/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= @@ -660,8 +670,10 @@ google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGj google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.30.0 h1:kPPoIgf3TsEvrm0PFe15JQ+570QVxYzEvvHqChK+cng= -google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -681,7 +693,6 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -691,36 +702,36 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh 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/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.26.6 h1:RZsJGP5p/qdWuFVqj/JFyt+6ttfgL+8/K8gtyi7riuo= -k8s.io/api v0.26.6/go.mod h1:Z+i6M3de4+LJiXtIiWSz/yLpnG+YjxAkeW6cgZqoxn4= -k8s.io/apiextensions-apiserver v0.26.6 h1:BrrWb5gQlWuwvqGJs1xMV1Qtr+xQS6ri6A1QBT4rnz8= -k8s.io/apiextensions-apiserver v0.26.6/go.mod h1:T6zbudRhmwN0sxg9lD51co/3Ah3JuCduz0nbtxyRXrk= -k8s.io/apimachinery v0.26.6 h1:OT04J9US8G+AqfqvcJZZ8s3WUQkWbc3t6ePPWieDN6I= -k8s.io/apimachinery v0.26.6/go.mod h1:qYzLkrQ9lhrZRh0jNKo2cfvf/R1/kQONnSiyB7NUJU0= -k8s.io/client-go v0.26.6 h1:CtC0wOxkAwjYyG2URGzdEKo0nLILopSDYn5AmzOkdi4= -k8s.io/client-go v0.26.6/go.mod h1:HDjbQGY7XzFYFUWOPAfAsIYhvFXyc9l6Ne0pO0bOQ7o= -k8s.io/cloud-provider v0.26.6 h1:byNR1IYs4ykPAqreq7icYmoGiy7ViupWtT5cz7W1pfQ= -k8s.io/cloud-provider v0.26.6/go.mod h1:zJd8Em72WezikROPVJiq+xZ44vUfYDR+OuIQE7CqCro= -k8s.io/component-base v0.26.6 h1:/Tm16Z8l/ruLFcw1XbFKTRSuxD6gQULQxxYgmar8PI0= -k8s.io/component-base v0.26.6/go.mod h1:fsv8CPnT5gumGxRbiQvK1j8IGvqSNwqZaJS5XTlLM1s= -k8s.io/csi-translation-lib v0.26.6 h1:lIgfnC0rJvrxA6yzJtQBQ8vt3lDOkBsJkddrZUim8Gs= -k8s.io/csi-translation-lib v0.26.6/go.mod h1:sBIA1rnrhXq6Mske+l4xmHAmkoviJIb7qcTU/O8/SJo= -k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= -k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f h1:2kWPakN3i/k81b0gvD5C5FJ2kxm1WrQFanWchyKuqGg= -k8s.io/kube-openapi v0.0.0-20230501164219-8b0f38b5fd1f/go.mod h1:byini6yhqGC14c3ebc/QwanvYwhuMWF6yz2F8uwW8eg= -k8s.io/utils v0.0.0-20230209194617-a36077c30491 h1:r0BAOLElQnnFhE/ApUsg3iHdVYYPBjNSSOMowRZxxsY= -k8s.io/utils v0.0.0-20230209194617-a36077c30491/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -knative.dev/pkg v0.0.0-20230712131115-7051d301e7f4 h1:oO/BQJpVCFTSTMHF/S6u+nPtIvbHDTsvbPZvdCZAFjs= -knative.dev/pkg v0.0.0-20230712131115-7051d301e7f4/go.mod h1:eXobTqst4aI7CNa6W7sG73VhEsHGWPSrkefeMTb++a0= +k8s.io/api v0.28.4 h1:8ZBrLjwosLl/NYgv1P7EQLqoO8MGQApnbgH8tu3BMzY= +k8s.io/api v0.28.4/go.mod h1:axWTGrY88s/5YE+JSt4uUi6NMM+gur1en2REMR7IRj0= +k8s.io/apiextensions-apiserver v0.28.3 h1:Od7DEnhXHnHPZG+W9I97/fSQkVpVPQx2diy+2EtmY08= +k8s.io/apiextensions-apiserver v0.28.3/go.mod h1:NE1XJZ4On0hS11aWWJUTNkmVB03j9LM7gJSisbRt8Lc= +k8s.io/apimachinery v0.28.4 h1:zOSJe1mc+GxuMnFzD4Z/U1wst50X28ZNsn5bhgIIao8= +k8s.io/apimachinery v0.28.4/go.mod h1:wI37ncBvfAoswfq626yPTe6Bz1c22L7uaJ8dho83mgg= +k8s.io/client-go v0.28.4 h1:Np5ocjlZcTrkyRJ3+T3PkXDpe4UpatQxj85+xjaD2wY= +k8s.io/client-go v0.28.4/go.mod h1:0VDZFpgoZfelyP5Wqu0/r/TRYcLYuJ2U1KEeoaPa1N4= +k8s.io/cloud-provider v0.28.4 h1:7obmeuJJ5CYTO9HANDqemf/d2v95U+F0t8aeH4jNOsQ= +k8s.io/cloud-provider v0.28.4/go.mod h1:xbhmGZ7wRHgXFP3SNsvdmFRO87KJIvirDYQA5ydMgGA= +k8s.io/component-base v0.28.4 h1:c/iQLWPdUgI90O+T9TeECg8o7N3YJTiuz2sKxILYcYo= +k8s.io/component-base v0.28.4/go.mod h1:m9hR0uvqXDybiGL2nf/3Lf0MerAfQXzkfWhUY58JUbU= +k8s.io/csi-translation-lib v0.28.4 h1:4TrU2zefZGU5HQCyPZvcPxkS6IowqZ/jBs2Qi/dPUpc= +k8s.io/csi-translation-lib v0.28.4/go.mod h1:oxwDdx0hyVqViINOUF7TGrVt51eqsOkQ0BTI+A9QcQs= +k8s.io/klog/v2 v2.110.1 h1:U/Af64HJf7FcwMcXyKm2RPM22WZzyR7OSpYj5tg3cL0= +k8s.io/klog/v2 v2.110.1/go.mod h1:YGtd1984u+GgbuZ7e08/yBuAfKLSO0+uR1Fhi6ExXjo= +k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 h1:aVUu9fTY98ivBPKR9Y5w/AuzbMm96cd3YHRTU83I780= +k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00/go.mod h1:AsvuZPBlUDVuCdzJ87iajxtXuR9oktsTctW/R9wwouA= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b h1:sgn3ZU783SCgtaSJjpcVVlRqd6GSnlTLKgpAAttJvpI= +k8s.io/utils v0.0.0-20230726121419-3b25d923346b/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= +knative.dev/pkg v0.0.0-20231010144348-ca8c009405dd h1:KJXBX9dOmRTUWduHg1gnWtPGIEl+GMh8UHdrBEZgOXE= +knative.dev/pkg v0.0.0-20231010144348-ca8c009405dd/go.mod h1:36cYnaOVHkzmhgybmYX6zDaTl3PakFeJQJl7wi6/RLE= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/controller-runtime v0.14.6 h1:oxstGVvXGNnMvY7TAESYk+lzr6S3V5VFxQ6d92KcwQA= -sigs.k8s.io/controller-runtime v0.14.6/go.mod h1:WqIdsAY6JBsjfc/CqO0CORmNtoCtE4S6qbPc9s68h+0= +sigs.k8s.io/controller-runtime v0.16.3 h1:2TuvuokmfXvDUamSx1SuAOO3eTyye+47mJCigwG62c4= +sigs.k8s.io/controller-runtime v0.16.3/go.mod h1:j7bialYoSn142nv9sCOJmQgDXQXxnroFU4VnX/brVJ0= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo= sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= -sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= +sigs.k8s.io/structured-merge-diff/v4 v4.3.0 h1:UZbZAZfX0wV2zr7YZorDz6GXROfDFj6LvqCRm4VUVKk= +sigs.k8s.io/structured-merge-diff/v4 v4.3.0/go.mod h1:N8hJocpFajUSSeSJ9bOZ77VzejKZaXsTtZo4/u7Io08= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/tools/allocatable-diff/main.go b/tools/allocatable-diff/main.go index b4eb8deeaa44..c95c18c88309 100644 --- a/tools/allocatable-diff/main.go +++ b/tools/allocatable-diff/main.go @@ -36,10 +36,10 @@ import ( corecloudprovider "github.com/aws/karpenter-core/pkg/cloudprovider" coreoperator "github.com/aws/karpenter-core/pkg/operator" nodepoolutil "github.com/aws/karpenter-core/pkg/utils/nodepool" - "github.com/aws/karpenter/pkg/apis/settings" "github.com/aws/karpenter/pkg/apis/v1alpha1" "github.com/aws/karpenter/pkg/cloudprovider" "github.com/aws/karpenter/pkg/operator" + "github.com/aws/karpenter/pkg/operator/options" ) var clusterName string @@ -60,7 +60,7 @@ func main() { restConfig := config.GetConfigOrDie() kubeClient := lo.Must(client.New(restConfig, client.Options{})) ctx := context.Background() - ctx = settings.ToContext(ctx, &settings.Settings{ClusterName: clusterName, IsolatedVPC: true, VMMemoryOverheadPercent: overheadPercent}) + ctx = options.ToContext(ctx, &options.Options{ClusterName: clusterName, IsolatedVPC: true, VMMemoryOverheadPercent: overheadPercent}) file := lo.Must(os.OpenFile(outFile, os.O_RDWR|os.O_CREATE, 0777)) defer file.Close()