From d5e38bedfafe9cd5772e95cef8aa5cefa9e6e3c5 Mon Sep 17 00:00:00 2001 From: Romeu Silva <200940189+cx-romeu-silva@users.noreply.github.com> Date: Wed, 13 Aug 2025 15:49:55 +0100 Subject: [PATCH 1/5] add support for folder-based query test cases --- test/main_test.go | 47 ++++++++++++++++++++++++++++-------- test/queries_content_test.go | 16 +++++++++++- test/queries_test.go | 24 +++++++++++++++--- 3 files changed, 72 insertions(+), 15 deletions(-) diff --git a/test/main_test.go b/test/main_test.go index 628d91a61bc..44eb1f4d39e 100644 --- a/test/main_test.go +++ b/test/main_test.go @@ -16,9 +16,9 @@ import ( "github.com/Checkmarx/kics/v2/pkg/parser" ansibleConfigParser "github.com/Checkmarx/kics/v2/pkg/parser/ansible/ini/config" ansibleHostsParser "github.com/Checkmarx/kics/v2/pkg/parser/ansible/ini/hosts" + bicepParser "github.com/Checkmarx/kics/v2/pkg/parser/bicep" buildahParser "github.com/Checkmarx/kics/v2/pkg/parser/buildah" - bicepParser "github.com/Checkmarx/kics/v2/pkg/parser/bicep" - dockerParser "github.com/Checkmarx/kics/v2/pkg/parser/docker" + dockerParser "github.com/Checkmarx/kics/v2/pkg/parser/docker" protoParser "github.com/Checkmarx/kics/v2/pkg/parser/grpc" jsonParser "github.com/Checkmarx/kics/v2/pkg/parser/json" terraformParser "github.com/Checkmarx/kics/v2/pkg/parser/terraform" @@ -99,11 +99,11 @@ type queryEntry struct { platform string } -func (q queryEntry) getSampleFiles(tb testing.TB, filePattern string) []string { +func (q queryEntry) getSampleFiles(tb testing.TB, directory, filePattern string) []string { var files []string for _, kinds := range q.kind { - kindFiles, err := filepath.Glob(path.Join(q.dir, fmt.Sprintf(filePattern, strings.ToLower(string(kinds))))) - positiveExpectedResultsFilepath := filepath.FromSlash(path.Join(q.dir, "test", ExpectedResultsFilename)) + kindFiles, err := filepath.Glob(path.Join(q.dir, directory, fmt.Sprintf(filePattern, strings.ToLower(string(kinds))))) + positiveExpectedResultsFilepath := q.ExpectedPositiveResultFile(directory) for i, check := range kindFiles { if check == positiveExpectedResultsFilepath { kindFiles = append(kindFiles[:i], kindFiles[i+1:]...) @@ -116,15 +116,41 @@ func (q queryEntry) getSampleFiles(tb testing.TB, filePattern string) []string { } func (q queryEntry) PositiveFiles(tb testing.TB) []string { - return q.getSampleFiles(tb, "test/positive*.%s") + return q.getSampleFiles(tb, "test", "positive*.%s") } func (q queryEntry) NegativeFiles(tb testing.TB) []string { - return q.getSampleFiles(tb, "test/negative*.%s") + return q.getSampleFiles(tb, "test", "negative*.%s") } -func (q queryEntry) ExpectedPositiveResultFile() string { - return filepath.FromSlash(path.Join(q.dir, "test", ExpectedResultsFilename)) +func (q queryEntry) ExpectedPositiveResultFile(directory string) string { + return filepath.FromSlash(path.Join(q.dir, directory, ExpectedResultsFilename)) +} + +func (q queryEntry) getSampleDirectories(tb testing.TB, dirPattern string) map[string][]string { + matches, err := filepath.Glob(path.Join(q.dir, dirPattern)) + require.Nil(tb, err) + + dirs := make(map[string][]string) + for _, match := range matches { + info, err := os.Stat(match) + require.Nil(tb, err) + if info.IsDir() { + relativePath, err := filepath.Rel(q.dir, match) + require.Nil(tb, err) + base := filepath.Base(relativePath) + dirs[base] = q.getSampleFiles(tb, relativePath, base+"*.%s") + } + } + return dirs +} + +func (q queryEntry) PositiveDirectories(tb testing.TB) map[string][]string { + return q.getSampleDirectories(tb, "test/positive*") +} + +func (q queryEntry) NegativeDirectories(tb testing.TB) map[string][]string { + return q.getSampleDirectories(tb, "test/negative*") } func appendQueries(queriesDir []queryEntry, dirName string, kind []model.FileKind, platform string) []queryEntry { @@ -303,4 +329,5 @@ func getQueryFilter() *source.QueryInspectorParameters { ExcludeQueries: source.ExcludeQueries{ByIDs: []string{}, ByCategories: []string{}}, InputDataPath: "", } -} \ No newline at end of file +} + diff --git a/test/queries_content_test.go b/test/queries_content_test.go index 7ed765627c7..1d90060ab72 100644 --- a/test/queries_content_test.go +++ b/test/queries_content_test.go @@ -171,7 +171,21 @@ func testQueryHasAllRequiredFiles(t *testing.T, entry queryEntry) { for _, negativeFile := range entry.NegativeFiles(t) { require.FileExists(t, negativeFile) } - require.FileExists(t, entry.ExpectedPositiveResultFile()) + require.FileExists(t, entry.ExpectedPositiveResultFile("test")) + + for positiveDirectory, positiveFiles := range entry.PositiveDirectories(t) { + require.True(t, len(positiveFiles) > 0, "No positive samples found for query %s, directory %s", entry.dir, positiveDirectory) + for _, positiveFile := range positiveFiles { + require.FileExists(t, positiveFile) + } + require.FileExists(t, entry.ExpectedPositiveResultFile("test/"+positiveDirectory)) + } + for negativeDirectory, negativeFiles := range entry.NegativeDirectories(t) { + require.True(t, len(negativeFiles) > 0, "No negative samples found for query %s, directory %s", entry.dir, negativeDirectory) + for _, negativeFile := range negativeFiles { + require.FileExists(t, negativeFile) + } + } } func testQueryHasGoodReturnParams(t *testing.T, entry queryEntry) { //nolint diff --git a/test/queries_test.go b/test/queries_test.go index 896e2fc6837..805a4158b38 100644 --- a/test/queries_test.go +++ b/test/queries_test.go @@ -161,9 +161,15 @@ func testPositiveAndNegativeQueries(t *testing.T, entry queryEntry) { name := strings.TrimPrefix(entry.dir, BaseTestsScanPath) t.Run(name+"_positive", func(t *testing.T) { testQuery(t, entry, entry.PositiveFiles(t), getExpectedVulnerabilities(t, entry)) + for dir, files := range entry.PositiveDirectories(t) { + testQuery(t, entry, files, getExpectedVulnerabilitiesInDirectory(t, entry, "test/"+dir)) + } }) t.Run(name+"_negative", func(t *testing.T) { testQuery(t, entry, entry.NegativeFiles(t), []model.Vulnerability{}) + for _, files := range entry.NegativeDirectories(t) { + testQuery(t, entry, files, []model.Vulnerability{}) + } }) } @@ -171,23 +177,33 @@ func benchmarkPositiveAndNegativeQueries(b *testing.B, entry queryEntry) { name := strings.TrimPrefix(entry.dir, BaseTestsScanPath) b.Run(name+"_positive", func(b *testing.B) { testQuery(b, entry, entry.PositiveFiles(b), getExpectedVulnerabilities(b, entry)) + for dir, files := range entry.PositiveDirectories(b) { + testQuery(b, entry, files, getExpectedVulnerabilitiesInDirectory(b, entry, "test/"+dir)) + } }) b.Run(name+"_negative", func(b *testing.B) { testQuery(b, entry, entry.NegativeFiles(b), []model.Vulnerability{}) + for _, files := range entry.NegativeDirectories(b) { + testQuery(b, entry, files, []model.Vulnerability{}) + } }) } -func getExpectedVulnerabilities(tb testing.TB, entry queryEntry) []model.Vulnerability { - content, err := os.ReadFile(entry.ExpectedPositiveResultFile()) - require.NoError(tb, err, "can't read expected result file %s", entry.ExpectedPositiveResultFile()) +func getExpectedVulnerabilitiesInDirectory(tb testing.TB, entry queryEntry, directory string) []model.Vulnerability { + content, err := os.ReadFile(entry.ExpectedPositiveResultFile(directory)) + require.NoError(tb, err, "can't read expected result file %s", entry.ExpectedPositiveResultFile(directory)) var expectedVulnerabilities []model.Vulnerability err = json.Unmarshal(content, &expectedVulnerabilities) - require.NoError(tb, err, "can't unmarshal expected result file %s", entry.ExpectedPositiveResultFile()) + require.NoError(tb, err, "can't unmarshal expected result file %s", entry.ExpectedPositiveResultFile(directory)) return expectedVulnerabilities } +func getExpectedVulnerabilities(tb testing.TB, entry queryEntry) []model.Vulnerability { + return getExpectedVulnerabilitiesInDirectory(tb, entry, "test") +} + func testQuery(tb testing.TB, entry queryEntry, filesPath []string, expectedVulnerabilities []model.Vulnerability) { ctrl := gomock.NewController(tb) defer ctrl.Finish() From 06d1deecce74134750be99c967989f614e41f6a5 Mon Sep 17 00:00:00 2001 From: Romeu Silva <200940189+cx-romeu-silva@users.noreply.github.com> Date: Thu, 14 Aug 2025 09:52:22 +0100 Subject: [PATCH 2/5] update documentation to mention the new feature --- docs/queries.md | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 45 insertions(+), 1 deletion(-) diff --git a/docs/queries.md b/docs/queries.md index 29e9b8a0532..cce2349c473 100644 --- a/docs/queries.md +++ b/docs/queries.md @@ -130,6 +130,50 @@ And the file tree should be as follows: | | |- query.rego ``` +##### Folder-Based Test Case (Optional) + +Test cases can optionally be organized into folders, which is useful when multiple resource files are needed for a single case. +Each folder is treated as a single unit representing either a positive or a negative case. Positive cases must include their own `positive_expected_result.json` file containing the expected results. +Other than the `positive_expected_result.json` file, every file inside the folder must start with the folder’s name. +The file tree for a query can be extended to: +```none +- / + |- / + | |- / + | | |- test/ + | | | |- positive<.ext> + | | | |- negative<.ext> + | | | |- positive_expected_result.json + | | | |- positive/ (= /) + | | | | |- <.ext> + | | | | |- positive_expected_result.json + | | | |- negative/ (= /) + | | | | |- <.ext> + | | |- metadata.json + | | |- query.rego +``` + +A query containing all the cases could look like: +```none +- / + |- / + | |- / + | | |- test/ + | | | |- positive1<.ext> + | | | |- positive2<.ext> + | | | |- negative1<.ext> + | | | |- negative2<.ext> + | | | |- positive_expected_result.json + | | | |- positive3/ + | | | | |- positive3_1<.ext> + | | | | |- positive3_2<.ext> + | | | | |- positive_expected_result.json + | | | |- negative3/ + | | | | |- negative3_1<.ext> + | | | | |- negative3_2<.ext> + | | |- metadata.json + | | |- query.rego +``` #### Query Dependencies @@ -155,4 +199,4 @@ Since the Password and Secrets mechanism uses generic regexes, we advise you to **Note**: KICS does not execute scan by default as of [version 1.3.0](https://github.com/Checkmarx/kics/releases/tag/v1.3.0). -**Note**: KICS deprecated the availability of binaries in the GitHub releases assets as of [version 1.5.2](https://github.com/Checkmarx/kics/releases/tag/v1.5.2), it is advised to update all systems (pipelines, integrations, etc.) to use the [KICS Docker Images](https://hub.docker.com/r/checkmarx/kics). \ No newline at end of file +**Note**: KICS deprecated the availability of binaries in the GitHub releases assets as of [version 1.5.2](https://github.com/Checkmarx/kics/releases/tag/v1.5.2), it is advised to update all systems (pipelines, integrations, etc.) to use the [KICS Docker Images](https://hub.docker.com/r/checkmarx/kics). From b4055b0c528a18eec108bcd1cf38349405d2235e Mon Sep 17 00:00:00 2001 From: Romeu Silva <200940189+cx-romeu-silva@users.noreply.github.com> Date: Thu, 14 Aug 2025 11:42:18 +0100 Subject: [PATCH 3/5] add test cases to demonstrate new feature * add test cases to the query terraform/aws/iam_group_without_users * add searchLine to query --- .../aws/iam_group_without_users/query.rego | 1 + .../test/negative4/negative4_1.tf | 4 +++ .../test/negative4/negative4_2.tf | 4 +++ .../test/positive2/positive2_1.tf | 7 +++++ .../test/positive2/positive2_2.tf | 27 +++++++++++++++++++ .../positive2/positive_expected_result.json | 14 ++++++++++ .../test/positive_expected_result.json | 4 ++- 7 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 assets/queries/terraform/aws/iam_group_without_users/test/negative4/negative4_1.tf create mode 100644 assets/queries/terraform/aws/iam_group_without_users/test/negative4/negative4_2.tf create mode 100644 assets/queries/terraform/aws/iam_group_without_users/test/positive2/positive2_1.tf create mode 100644 assets/queries/terraform/aws/iam_group_without_users/test/positive2/positive2_2.tf create mode 100644 assets/queries/terraform/aws/iam_group_without_users/test/positive2/positive_expected_result.json diff --git a/assets/queries/terraform/aws/iam_group_without_users/query.rego b/assets/queries/terraform/aws/iam_group_without_users/query.rego index f4139ae33b5..cb9a030d0a5 100644 --- a/assets/queries/terraform/aws/iam_group_without_users/query.rego +++ b/assets/queries/terraform/aws/iam_group_without_users/query.rego @@ -16,6 +16,7 @@ CxPolicy[result] { "issueType": "MissingAttribute", "keyExpectedValue": sprintf("aws_iam_group[%s] should be associated with an aws_iam_group_membership that has at least one user set", [name]), "keyActualValue": sprintf("aws_iam_group[%s] is not associated with an aws_iam_group_membership that has at least one user set", [name]), + "searchLine": common_lib.build_search_line(["resource", "aws_iam_group", name], []) } } diff --git a/assets/queries/terraform/aws/iam_group_without_users/test/negative4/negative4_1.tf b/assets/queries/terraform/aws/iam_group_without_users/test/negative4/negative4_1.tf new file mode 100644 index 00000000000..16f0bf2ddd8 --- /dev/null +++ b/assets/queries/terraform/aws/iam_group_without_users/test/negative4/negative4_1.tf @@ -0,0 +1,4 @@ + +resource "aws_iam_group" "group1" { + name = "test" +} diff --git a/assets/queries/terraform/aws/iam_group_without_users/test/negative4/negative4_2.tf b/assets/queries/terraform/aws/iam_group_without_users/test/negative4/negative4_2.tf new file mode 100644 index 00000000000..b46d5003103 --- /dev/null +++ b/assets/queries/terraform/aws/iam_group_without_users/test/negative4/negative4_2.tf @@ -0,0 +1,4 @@ +resource "aws_iam_user_group_membership" "user_group_membership" { + user = var.user_iam + groups = aws_iam_group.group1.name +} diff --git a/assets/queries/terraform/aws/iam_group_without_users/test/positive2/positive2_1.tf b/assets/queries/terraform/aws/iam_group_without_users/test/positive2/positive2_1.tf new file mode 100644 index 00000000000..630dcfe1b12 --- /dev/null +++ b/assets/queries/terraform/aws/iam_group_without_users/test/positive2/positive2_1.tf @@ -0,0 +1,7 @@ +resource "aws_iam_group" "group2" { + name = "test-group" +} + +resource "aws_iam_group" "group3" { + name = "test-group" +} diff --git a/assets/queries/terraform/aws/iam_group_without_users/test/positive2/positive2_2.tf b/assets/queries/terraform/aws/iam_group_without_users/test/positive2/positive2_2.tf new file mode 100644 index 00000000000..d322a268015 --- /dev/null +++ b/assets/queries/terraform/aws/iam_group_without_users/test/positive2/positive2_2.tf @@ -0,0 +1,27 @@ +resource "aws_iam_group_membership" "team2" { + name = "tf-testing-group-membership" + + users = [ + aws_iam_user.user_one2.name, + aws_iam_user.user_two2.name, + ] + + group = aws_iam_group.group222.name +} + +resource "aws_iam_user" "user_one2" { + name = "test-user" +} + +resource "aws_iam_user" "user_two2" { + name = "test-user-two" +} + +resource "aws_iam_group_membership" "team3" { + name = "tf-testing-group-membership" + + users = [ + ] + + group = aws_iam_group.group3.name +} diff --git a/assets/queries/terraform/aws/iam_group_without_users/test/positive2/positive_expected_result.json b/assets/queries/terraform/aws/iam_group_without_users/test/positive2/positive_expected_result.json new file mode 100644 index 00000000000..9694db417c6 --- /dev/null +++ b/assets/queries/terraform/aws/iam_group_without_users/test/positive2/positive_expected_result.json @@ -0,0 +1,14 @@ +[ + { + "queryName": "IAM Group Without Users", + "severity": "MEDIUM", + "fileName": "positive2_1.tf", + "line": 1 + }, + { + "queryName": "IAM Group Without Users", + "severity": "MEDIUM", + "fileName": "positive2_1.tf", + "line": 5 + } +] diff --git a/assets/queries/terraform/aws/iam_group_without_users/test/positive_expected_result.json b/assets/queries/terraform/aws/iam_group_without_users/test/positive_expected_result.json index c6f93a4d5fb..1552705602c 100644 --- a/assets/queries/terraform/aws/iam_group_without_users/test/positive_expected_result.json +++ b/assets/queries/terraform/aws/iam_group_without_users/test/positive_expected_result.json @@ -2,11 +2,13 @@ { "queryName": "IAM Group Without Users", "severity": "MEDIUM", + "fileName": "positive.tf", "line": 12 }, { "queryName": "IAM Group Without Users", "severity": "MEDIUM", + "fileName": "positive.tf", "line": 33 } -] \ No newline at end of file +] From ddd39341670eafe920efe028c0c1c15050225b34 Mon Sep 17 00:00:00 2001 From: Romeu Silva <200940189+cx-romeu-silva@users.noreply.github.com> Date: Thu, 14 Aug 2025 11:52:22 +0100 Subject: [PATCH 4/5] force folder-based test cases to have more than 1 file --- test/queries_content_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/queries_content_test.go b/test/queries_content_test.go index 1d90060ab72..11c94dda191 100644 --- a/test/queries_content_test.go +++ b/test/queries_content_test.go @@ -174,14 +174,14 @@ func testQueryHasAllRequiredFiles(t *testing.T, entry queryEntry) { require.FileExists(t, entry.ExpectedPositiveResultFile("test")) for positiveDirectory, positiveFiles := range entry.PositiveDirectories(t) { - require.True(t, len(positiveFiles) > 0, "No positive samples found for query %s, directory %s", entry.dir, positiveDirectory) + require.True(t, len(positiveFiles) > 1, "Not enough positive samples found for query %s in directory %s", entry.dir, positiveDirectory) for _, positiveFile := range positiveFiles { require.FileExists(t, positiveFile) } require.FileExists(t, entry.ExpectedPositiveResultFile("test/"+positiveDirectory)) } for negativeDirectory, negativeFiles := range entry.NegativeDirectories(t) { - require.True(t, len(negativeFiles) > 0, "No negative samples found for query %s, directory %s", entry.dir, negativeDirectory) + require.True(t, len(negativeFiles) > 1, "Not enough negative samples found for query %s in directory %s", entry.dir, negativeDirectory) for _, negativeFile := range negativeFiles { require.FileExists(t, negativeFile) } From 5741975c0abb4202abb92644cf174c3d498a98e9 Mon Sep 17 00:00:00 2001 From: Romeu Silva <200940189+cx-romeu-silva@users.noreply.github.com> Date: Mon, 18 Aug 2025 11:43:00 +0100 Subject: [PATCH 5/5] update helm version --- go.mod | 39 +++++++++++++++-------------- go.sum | 78 +++++++++++++++++++++++++++++++++------------------------- 2 files changed, 65 insertions(+), 52 deletions(-) diff --git a/go.mod b/go.mod index aed47f5e02e..6207b8b1b36 100644 --- a/go.mod +++ b/go.mod @@ -31,7 +31,7 @@ require ( github.com/rs/zerolog v1.34.0 github.com/sosedoff/ansible-vault-go v0.2.0 github.com/spf13/cobra v1.9.1 - github.com/spf13/pflag v1.0.6 + github.com/spf13/pflag v1.0.7 github.com/spf13/viper v1.20.1 github.com/stretchr/testify v1.10.0 github.com/tdewolff/minify/v2 v2.23.1 @@ -39,11 +39,11 @@ require ( github.com/xeipuuv/gojsonschema v1.2.0 github.com/yargevad/filepathx v1.0.0 github.com/zclconf/go-cty v1.16.2 - golang.org/x/net v0.40.0 - golang.org/x/text v0.26.0 - golang.org/x/tools v0.33.0 + golang.org/x/net v0.41.0 + golang.org/x/text v0.27.0 + golang.org/x/tools v0.34.0 gopkg.in/yaml.v3 v3.0.1 - helm.sh/helm/v3 v3.18.4 + helm.sh/helm/v3 v3.18.5 mvdan.cc/sh/v3 v3.11.0 sigs.k8s.io/controller-runtime v0.14.6 ) @@ -93,6 +93,7 @@ require ( github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.7.0 // indirect github.com/samber/lo v1.38.1 // indirect + github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/tchap/go-patricia/v2 v2.3.2 // indirect github.com/x448/float16 v0.8.4 // indirect @@ -107,6 +108,8 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect go.opentelemetry.io/otel/trace v1.35.0 // indirect go.uber.org/multierr v1.11.0 // indirect + go.yaml.in/yaml/v2 v2.4.2 // indirect + go.yaml.in/yaml/v3 v3.0.3 // indirect golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 // indirect golang.org/x/mod v0.25.0 // indirect google.golang.org/api v0.215.0 // indirect @@ -211,29 +214,29 @@ require ( github.com/xlab/treeprint v1.2.0 // indirect github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect github.com/yashtewari/glob-intersection v0.2.0 // indirect - golang.org/x/crypto v0.39.0 // indirect + golang.org/x/crypto v0.40.0 // indirect golang.org/x/oauth2 v0.28.0 // indirect - golang.org/x/sync v0.15.0 // indirect - golang.org/x/sys v0.33.0 // indirect - golang.org/x/term v0.32.0 // indirect + golang.org/x/sync v0.16.0 // indirect + golang.org/x/sys v0.34.0 // indirect + golang.org/x/term v0.33.0 // indirect golang.org/x/time v0.11.0 // indirect google.golang.org/grpc v1.71.1 // indirect google.golang.org/protobuf v1.36.6 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - k8s.io/api v0.33.2 - k8s.io/apiextensions-apiserver v0.33.2 // indirect - k8s.io/apimachinery v0.33.2 - k8s.io/apiserver v0.33.2 // indirect - k8s.io/cli-runtime v0.33.2 // indirect - k8s.io/client-go v0.33.2 - k8s.io/component-base v0.33.2 // indirect + k8s.io/api v0.33.3 + k8s.io/apiextensions-apiserver v0.33.3 // indirect + k8s.io/apimachinery v0.33.3 + k8s.io/apiserver v0.33.3 // indirect + k8s.io/cli-runtime v0.33.3 // indirect + k8s.io/client-go v0.33.3 + k8s.io/component-base v0.33.3 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect - k8s.io/kubectl v0.33.2 // indirect + k8s.io/kubectl v0.33.3 // indirect k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect sigs.k8s.io/kustomize/api v0.19.0 // indirect sigs.k8s.io/kustomize/kyaml v0.19.0 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect - sigs.k8s.io/yaml v1.4.0 // indirect + sigs.k8s.io/yaml v1.5.0 // indirect ) diff --git a/go.sum b/go.sum index 12889dc6a88..05e193ed67a 100644 --- a/go.sum +++ b/go.sum @@ -770,6 +770,8 @@ github.com/distribution/distribution/v3 v3.0.0 h1:q4R8wemdRQDClzoNNStftB2ZAfqOiN github.com/distribution/distribution/v3 v3.0.0/go.mod h1:tRNuFoZsUdyRVegq8xGNeds4KLjwLCRin/tTo6i1DhU= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI= +github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqIjCBS4wrsOh9yRqcz8= github.com/docker/docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo= github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8= @@ -1243,6 +1245,8 @@ github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsF github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= github.com/samber/lo v1.38.1 h1:j2XEAqXKb09Am4ebOg31SpvzUTTs6EN3VfgeLUhPdXM= github.com/samber/lo v1.38.1/go.mod h1:+m/ZKRl6ClXCE2Lgf3MsQlWfh4bn1bz6CXEOxnEXnEA= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEVZGK7IN2kJkjTuQ= +github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= @@ -1263,8 +1267,9 @@ github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo= github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0= -github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.7 h1:vN6T9TfwStFPFM5XzjsvmzZkLuaLX+HS+0SeFLRgU6M= +github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4= github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -1403,6 +1408,10 @@ 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.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8= go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= +go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= +go.yaml.in/yaml/v3 v3.0.3 h1:bXOww4E/J3f66rav3pX3m8w6jDE4knZjGOw8b5Y6iNE= +go.yaml.in/yaml/v3 v3.0.3/go.mod h1:tBHosrYAkRZjRAOREWbDnBXUf08JOwYq++0QNwQiWzI= 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= golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -1416,8 +1425,8 @@ golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliY golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= -golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM= -golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U= +golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM= +golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1545,8 +1554,8 @@ golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= -golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= -golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= +golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw= +golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1598,8 +1607,8 @@ golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8= -golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw= +golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1684,8 +1693,8 @@ golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= -golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA= +golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= 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= @@ -1701,8 +1710,8 @@ golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= -golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg= -golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= +golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg= +golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1723,8 +1732,8 @@ golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M= -golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= +golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4= +golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= 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= @@ -1798,8 +1807,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc= -golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI= +golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= +golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg= 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= @@ -2104,8 +2113,8 @@ 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.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -helm.sh/helm/v3 v3.18.4 h1:pNhnHM3nAmDrxz6/UC+hfjDY4yeDATQCka2/87hkZXQ= -helm.sh/helm/v3 v3.18.4/go.mod h1:WVnwKARAw01iEdjpEkP7Ii1tT1pTPYfM1HsakFKM3LI= +helm.sh/helm/v3 v3.18.5 h1:Cc3Z5vd6kDrZq9wO9KxKLNEickiTho6/H/dBNRVSos4= +helm.sh/helm/v3 v3.18.5/go.mod h1:L/dXDR2r539oPlFP1PJqKAC1CUgqHJDLkxKpDGrWnyg= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= @@ -2114,26 +2123,26 @@ honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt 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= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= -k8s.io/api v0.33.2 h1:YgwIS5jKfA+BZg//OQhkJNIfie/kmRsO0BmNaVSimvY= -k8s.io/api v0.33.2/go.mod h1:fhrbphQJSM2cXzCWgqU29xLDuks4mu7ti9vveEnpSXs= -k8s.io/apiextensions-apiserver v0.33.2 h1:6gnkIbngnaUflR3XwE1mCefN3YS8yTD631JXQhsU6M8= -k8s.io/apiextensions-apiserver v0.33.2/go.mod h1:IvVanieYsEHJImTKXGP6XCOjTwv2LUMos0YWc9O+QP8= -k8s.io/apimachinery v0.33.2 h1:IHFVhqg59mb8PJWTLi8m1mAoepkUNYmptHsV+Z1m5jY= -k8s.io/apimachinery v0.33.2/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM= -k8s.io/apiserver v0.33.2 h1:KGTRbxn2wJagJowo29kKBp4TchpO1DRO3g+dB/KOJN4= -k8s.io/apiserver v0.33.2/go.mod h1:9qday04wEAMLPWWo9AwqCZSiIn3OYSZacDyu/AcoM/M= -k8s.io/cli-runtime v0.33.2 h1:koNYQKSDdq5AExa/RDudXMhhtFasEg48KLS2KSAU74Y= -k8s.io/cli-runtime v0.33.2/go.mod h1:gnhsAWpovqf1Zj5YRRBBU7PFsRc6NkEkwYNQE+mXL88= -k8s.io/client-go v0.33.2 h1:z8CIcc0P581x/J1ZYf4CNzRKxRvQAwoAolYPbtQes+E= -k8s.io/client-go v0.33.2/go.mod h1:9mCgT4wROvL948w6f6ArJNb7yQd7QsvqavDeZHvNmHo= -k8s.io/component-base v0.33.2 h1:sCCsn9s/dG3ZrQTX/Us0/Sx2R0G5kwa0wbZFYoVp/+0= -k8s.io/component-base v0.33.2/go.mod h1:/41uw9wKzuelhN+u+/C59ixxf4tYQKW7p32ddkYNe2k= +k8s.io/api v0.33.3 h1:SRd5t//hhkI1buzxb288fy2xvjubstenEKL9K51KBI8= +k8s.io/api v0.33.3/go.mod h1:01Y/iLUjNBM3TAvypct7DIj0M0NIZc+PzAHCIo0CYGE= +k8s.io/apiextensions-apiserver v0.33.3 h1:qmOcAHN6DjfD0v9kxL5udB27SRP6SG/MTopmge3MwEs= +k8s.io/apiextensions-apiserver v0.33.3/go.mod h1:oROuctgo27mUsyp9+Obahos6CWcMISSAPzQ77CAQGz8= +k8s.io/apimachinery v0.33.3 h1:4ZSrmNa0c/ZpZJhAgRdcsFcZOw1PQU1bALVQ0B3I5LA= +k8s.io/apimachinery v0.33.3/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM= +k8s.io/apiserver v0.33.3 h1:Wv0hGc+QFdMJB4ZSiHrCgN3zL3QRatu56+rpccKC3J4= +k8s.io/apiserver v0.33.3/go.mod h1:05632ifFEe6TxwjdAIrwINHWE2hLwyADFk5mBsQa15E= +k8s.io/cli-runtime v0.33.3 h1:Dgy4vPjNIu8LMJBSvs8W0LcdV0PX/8aGG1DA1W8lklA= +k8s.io/cli-runtime v0.33.3/go.mod h1:yklhLklD4vLS8HNGgC9wGiuHWze4g7x6XQZ+8edsKEo= +k8s.io/client-go v0.33.3 h1:M5AfDnKfYmVJif92ngN532gFqakcGi6RvaOF16efrpA= +k8s.io/client-go v0.33.3/go.mod h1:luqKBQggEf3shbxHY4uVENAxrDISLOarxpTKMiUuujg= +k8s.io/component-base v0.33.3 h1:mlAuyJqyPlKZM7FyaoM/LcunZaaY353RXiOd2+B5tGA= +k8s.io/component-base v0.33.3/go.mod h1:ktBVsBzkI3imDuxYXmVxZ2zxJnYTZ4HAsVj9iF09qp4= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff h1:/usPimJzUKKu+m+TE36gUyGcf03XZEP0ZIKgKj35LS4= k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8= -k8s.io/kubectl v0.33.2 h1:7XKZ6DYCklu5MZQzJe+CkCjoGZwD1wWl7t/FxzhMz7Y= -k8s.io/kubectl v0.33.2/go.mod h1:8rC67FB8tVTYraovAGNi/idWIK90z2CHFNMmGJZJ3KI= +k8s.io/kubectl v0.33.3 h1:r/phHvH1iU7gO/l7tTjQk2K01ER7/OAJi8uFHHyWSac= +k8s.io/kubectl v0.33.3/go.mod h1:euj2bG56L6kUGOE/ckZbCoudPwuj4Kud7BR0GzyNiT0= k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro= k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= lukechampine.com/uint128 v1.1.1/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl2j1gk= @@ -2191,5 +2200,6 @@ sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU= sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY= sigs.k8s.io/structured-merge-diff/v4 v4.6.0 h1:IUA9nvMmnKWcj5jl84xn+T5MnlZKThmUW1TdblaLVAc= sigs.k8s.io/structured-merge-diff/v4 v4.6.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps= -sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= +sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ= +sigs.k8s.io/yaml v1.5.0/go.mod h1:wZs27Rbxoai4C0f8/9urLZtZtF3avA3gKvGyPdDqTO4=